• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLでグループ内での最大値の行を取得)

MySQLでグループ内での最大値の行を取得

このQ&Aのポイント
  • MySQLを使用して、テーブル内のグループごとに最大値の行を取得したいです。
  • 具体的には、各IDごとに、dateが最新でnoが大きい行を取り出したいです。
  • 現在、MAXやWHEREを使用してサブクエリを作成しましたが、うまく取り出せません。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

ああ、ごめんなさい、dateが先でしたね select id,no,date,content from hoge where (id,no,date) in( select id,max(no),date from hoge where (id,date) in (select id,max(date) from hoge group by id) group by id,date);

hukazuo
質問者

お礼

ありがとうございます。 シンプルでわかりやすく、無事解決しました、

その他の回答 (4)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.5

select * from tbl t1 where not exists ( select 1 from tbl t2 where t1.id=t2.id and (t1.date, t1.no ) < (t2.date, t2.no ) ); というやり方もあります。

hukazuo
質問者

お礼

これもシンプルですね。 ありがとうございます。 今後の参考にさせていただきます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

なんか考えすぎじゃない? select id,no,date,content from hoge where (id,no) in (select id,max(no) from hoge group by id);

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

下記のSQLでどうですか ---- SELECT b.* FROM T_TEST b INNER JOIN (SELECT a.id, a.[date], MAX(a.no) AS mno FROM T_TEST a INNER JOIN (SELECT id, MAX([date]) AS mdate FROM T_TEST GROUP BY id) g1 --idでグループし最大のdateを取得 ON a.id = g1.id AND a.[date] = g1.mdate GROUP BY a.id, a.[date]) g2 --idと最大dateでグループし最大のnoを取得 ON b.id = g2.id AND b.[no] = g2.mno AND b.[date] = g2.[date]

hukazuo
質問者

お礼

ありがとうございます。 何となくですが理解できました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

条件提示が必要です。 idとnoのデータ型はなんでしょうか? noの最大値は必ずユニークなのでしょうか? 言い換えればidとnoの組合せは必ずユニークなのでしょうか?