他のテーブルのデータのIDなどを保持して関連づけしているときに、いつの間にかリンク先テーブルのデータを削除してリンク切れを起こしてしまうことがある。
そこでリンクが切れているデータを探すSQL
aTable
├ id
└ b_id(bTableのリンク先id
bTable
└ id
という構成のときに、aTableの中からリンク先のbTableに対象となるidのデータが存在しないものを抽出する。
SELECT aTable.id
FROM aTable
LEFT JOIN bTable ON aTable.b_id = bTable.id
WHERE bTable.id IS NULL
aTableとbTableをLeft Joinで結合したときに相手方のidがNULLになってしまうものを抽出すればいい。