質問: mysqlで特定のグループの上位3件を取得したい。 ちょっと壁に当たったので、わかる範囲でお答え頂きたいのですが、 以下のようなテーブルがあったとします。 id user price date 1 a 1000 2013/5/31 2 a 1200 2013/6/1 3 b 1000 2013/5/20 4 a 1500 2013/5/12 5 c 1300 2013/5/31 6 c 1400 2013/5/14 7 c 1000 2013/5/6 8 b 1100 2013/5/24 9 b 1200 2013/5/30 10 b 1100 2013/5/4 11 a 1800 2013/4/12 12 c 900 2013/4/6 ・・・ 次に取得したいのは、 a 1200 2013/6/1 a 1000 2013/5/31 a 1500 2013/5/12 c 1300 2013/5/31 c 1400 2013/5/14 c 1000 2013/5/6 b 1200 2013/5/30 b 1100 2013/5/24 b 1000 2013/5/20 このようなデータなのですが、 条件: 1.userでグループ化したうちの日付降順で並べる 2.そのuserのデータの中で、日付降順で並べる 3.userのデータが複数あっても、取得するのは新しいものから3件のみ この条件を満たすsql文はどのように記述すればよいか、お知恵をお貸し下さい。 よろしくお願いします。
回答: http://note.chiebukuro.yahoo.co.jp/detail/n181988 参考にしてください。 cnt列はグルーピングごとにカウントアップするのでこれをwhere条件で絞ればいいかなと思います。