- 締切済み
Groupの中の条件に合致するデータを抜き出したい
Groupの中の条件に合致するデータを抜き出したい いくつかのテーブルからGroupでくくったデータを抜き出しました。 その中から条件に合致するデータに絞りたいのですが、 思った結果となってくれません。 DB:MySQL 5.1.50 以下のようなことをしたいと考えています。 [元のデータ] ID | 日付 | 担当 | 金額 A-01 |2010-09-01 |Angas |1000 A-01 |2010-08-31 |Mayor |1500 A-01 |2010-08-25 |Angas |2000 B-01 |2010-08-30 |Roger |1350 B-01 |2010-09-01 |Angas |2000 B-01 |2010-08-20 |Roger |1350 [結果として欲しいデータ] ID | 日付 | 担当 | 金額 A-01 |2010-09-01 |Angas |1000 A-01 |2010-08-31 |Mayor |1500 B-01 |2010-08-30 |Roger |1350 B-01 |2010-09-01 |Angas |2000 ちょっとデータ例が貧弱ですが・・・ IDと担当でグループ化した中で、日付が最も大きいレコードを抜き出したい。 というのが目的です。 どのようにSQLを書くと良いのでしょうか? IDと担当でグループ化までは書けたのですが、 「グループのデータの中で日付で降順としたものの最新」というのを どのように書いたものか悩んでいます。 PS.こういうSQLの書き方で悩んだ時に、どうやって情報を集めると 良い情報に出合えるかの助言も頂ければ助かります。 よろしくお願いします。
お礼
moousiさん、たびたびありがとうございます。 同じ結果を求めるSQLって、幾筋もあるんですね。 それだけに特性を理解していないと、結果の出方も変わるということがわかりました。 > 質問主さま、 > #1のSQLは、悪い例として扱い参考にしてください。 moousiさんに回答をつけていただいたおかげで、 これだけの別の例も見ることができましたし、 おかげで、今回の例でいくと条件の甘さも新たに見つかりました。 たとえば、max(日付)が2レコード以上の場合など。 ありがとうございます。