| id | moge | ← カラム名です
| 01 | 002 |
| 02 | 100 |
| 03 | 010 |
| 01 | 003 |
| 02 | 102 |
| 03 | 012 |
| 01 | 001 |
| 02 | 101 |
| 03 | 011 |
に対してクエリを投げて、各idの中で一番mogeの値が大きい行を全て取得したいと考えています。つまり欲しい結果は下記になります。
| 01 | 003 |
| 02 | 102 |
| 03 | 012 |
このため下記のクエリを考えたのですが、
SELECT * FROM <table名> GROUP BY ID ORDER BY moge DESC;
これをするとORDER BYの前にGROUP BYで同一IDが纏められてしまい、正しくソートが働かないようです。
お手数ですが正しく結果を取得するためのクエリをご教授いただければ幸いです。
SELECT * FROM ( SELECT * FROM <table名> GROUP BY ID ) ORDER BY moge DESC;
というように 集計したものを ソートしたらいかがでしょうか?
SELECT ID, max(moge) FROM <table名> GROUP BY ID ORDER BY ID;
でどうでしょうか。
質問の内容を そのまま 変えたけど 実際は ORDER BY id; じゃないのかなー。
2011/12/13 19:34:21>内側の括弧内のGROUP BYでmogeが小さいものが残るように適用されたりしないですかね・・
2011/12/13 20:40:34全部出ますよ。