人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

mysql のクエリ構文についての相談です

| 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が纏められてしまい、正しくソートが働かないようです。

お手数ですが正しく結果を取得するためのクエリをご教授いただければ幸いです。


●質問者: n_maco2
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●40ポイント

SELECT * FROM ( SELECT * FROM <table名> GROUP BY ID ) ORDER BY moge DESC;

というように 集計したものを ソートしたらいかがでしょうか?


n_maco2さんのコメント
ご回答ありがとうございます。 内側の括弧内のGROUP BYでmogeが小さいものが残るように適用されたりしないですかね・・ ちょっと試してみたいと思います。

きゃづみぃさんのコメント
質問の内容を そのまま 変えたけど 実際は ORDER BY id; じゃないのかなー。

きゃづみぃさんのコメント
>内側の括弧内のGROUP BYでmogeが小さいものが残るように適用されたりしないですかね・・ 全部出ますよ。

2 ● nattow
●94ポイント ベストアンサー
SELECT ID, max(moge) FROM <table名> GROUP BY ID ORDER BY ID;

でどうでしょうか。


3 ● kodairabase
●66ポイント
SELECT id, MAX(moge) FROM テーブル名 GROUP BY id ORDER BY id;
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ