MYSQL 結合と最新データ取得のselect文

mocadlogo

条件指定し、テーブル結合、最新データの取得(最新日付がなければ、一番近い日付データを取得)

select idlist.id, idlist.name, sales.data, sales.price
from idlist A
join sales B on B.id = A.id
where A.taxfree = 1
-- ここまでは単なるjoin
and not exists (
select * from sales
-- グルーピングに用いるキー属性は'='で…(a)
where id = B.id
-- それ以外は同一キーを排除できる何らかの条件を指定…(b)
and data > B.data
)

ここでBのキー属性がもっと多い場合など、グルーピングの単位を変更する必要があるならば(a)にその属性を追加すればよいし、(b)は同一値を排除できればよいので、’>’でも’<'でも、あるいは必要に応じてその他の条件に変更可能。 「属性Xが最大のもののうち属性Yが最小のもの」などという複合条件でも同じ考え方で容易に応用できる。