SQL文で最新日付のみ抽出するには(最大値の抽出)

下記のようなaテーブルの中の最新日付のものをそれぞれ抽出する処理をSQL文で実行結果を出力するには、次のようにします。

SELECT MAX(日付),ID
FROM aテーブル
GROUP BY ID

逆にもっとも古い日付のみを出力するには次のようにします。

SELECT MIN(日付),ID
FROM aテーブル
GROUP BY ID

元データ aテーブル

ID日付
12010/01/01
12010/01/02
12010/01/03
22010/01/01
22010/01/02
22010/01/05
32010/01/01
32010/02/02
32010/03/03

実行結果

ID日付
12010/01/03
22010/01/05
32010/03/03

ただしこれはIDが同一のものの中から最新日時を抽出するには問題がないですが、ID、日時以外のカラムがあったときにはそのカラムの値が最新日時のものになるとは限りません。

場合によっては次のようになります。(MySQL5.5で検証)

元データ aテーブル

ID日付名前
12010/01/01A
12010/01/02B
12010/01/03C
22010/01/01D
22010/01/02E
22010/01/05F
32010/01/01G
32010/02/02H
32010/03/03I
SELECT MAX(日付),ID,名前
FROM aテーブル
GROUP BY ID

実行結果

ID日付名前
12010/01/03A
22010/01/05D
32010/03/03G

関連記事

スポンサーリンク

メールテキストの1行の文字数制限(最大1,000文字、78文字以下であるべき)

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る