ショコラ
SQL 2つのテーブルを2つのキーで結合して存在しないものを抽出するには?
not exists を使うといい感じにいけそうです。
もっさん先輩
例えばこちら↓。モデルテーブルの中に存在しない相場の情報を検索します。
SELECT * FROM model d
WHERE
AND NOT EXISTS (
SELECT * FROM price p
WHERE
AND p.mkr_id = d.mkr_id
AND p.mdl_id = d.mdl_id
)他にも、↓のように NOT IN を使って2つのテーブルで不足の情報を検索する際に、20万のデータを検索したところ戻ってこなかった。
SELECT cstmr_id,mail FROM cstmr WHERE cstmr_id NOT IN (SELECT cstmr_id FROM cstmr_referral)これを↓のように書き換えることで数倍速くなった。NOT EXISTS 偉大です。NOT IN は遅い。
SELECT cstmr_id,mail FROM cstmr AS i WHERE NOT EXISTS (SELECT 1 FROM referral AS r WHERE r.cstmr_id = i.cstmr_id)以上