[ SPECIAL ]

MySQL 5.1.39

SQL でそれぞれの ID 毎の最新の日付のレコードを抽出する

2011/02/10 Tomohiro Kumagai

□ ID ごとの最新の日付のレコードを取得する

例えば次のようなテーブルがあったとします。

 

販売履歴
ID 履歴の通し番号です。
商品ID 販売した商品の ID 番号です。
販売日 販売した日付です。
販売時価格 販売時の価格です。

この "販売履歴" テーブルには、"商品ID" で明示された商品について、それが販売される事に "販売履歴" にレコードを追加して行くものとします。

 

このとき、"販売履歴" から、それぞれの "ItemID" についての最新の販売履歴を抽出したい場合には、次のような SQL 文を実行します。

SELECT * FROM 販売履歴 T1 WHERE NOT EXISTS (SELECT * FROM 販売履歴 T2 WHERE T1.商品ID = T2.商品ID AND T1.販売日 < T2.販売日)

"販売履歴" テーブル(販売履歴 T1)から抽出する際に、同じ "商品ID" の販売履歴(販売履歴 T2 WHERE T1.商品ID = T2.商品ID)の中で(AND)どんなレコードよりも小さい "販売日" を持ったレコード(T1.販売日 < T2.販売日)以外(NOT EXISTS)、すなわち唯一大きい販売日(最近販売した "販売履歴")という条件で抽出しています。

 


 

カスタム検索

copyright © Tomohiro Kumagai @ EasyStyle G.K.
contact me: please from mail-form page.