LEFT JOIN + UPDATE
purchase_group_recordsテーブルに複数紐づくpurchase_recordsテーブルがあって、
purchase_recordsの最新issued_dateをpurchase_group_recordsのissued_dateにセットしたい。
purchase_record_groupsのidとpurchase_recordsの最新issued_dateは以下のSQLで取得できる。
SELECT g.id as group_id, r.issued_date FROM purchase_record_groups AS g LEFT JOIN purchase_records AS r ON g.id = r.purchase_record_group_id AND r.created_date = (SELECT MAX(r2.created_date) FROM purchase_records AS r2 WHERE g.id = r2.purchase_record_group_id)
ここで取得した g.id を元に r.issued_date を purchase_group_records の issued_date にセットしたい。
そんなときは以下のようにテーブル名を上記のクエリで置き換える。
UPDATE purchase_record_groups AS g LEFT JOIN purchase_records AS r ON g.id = r.purchase_record_group_id AND r.created_date = (SELECT MAX(r2.created_date) FROM purchase_records AS r2 WHERE g.id = r2.purchase_record_group_id) SET g.issued_date = r.issued_date;
これは便利だ。