article.cat_id
にリンクされているデータベースがありますcategory.id
。
からいくつかの行を削除しましたが、存在しないリンクへのリンクcategory
からすべての行を選択または削除したいと考えています。残念ながら、どのs が削除されたのか正確にはわかりません。article
id
category
id
に等しいものarticle
がないすべての行を返すようにチェックする SQL の方法はありますか?category.id
article.cat_id
例えば
SELECT * FROM Table_1 where Table_1.ID not in (SELECT Table_2.ID FROM Table_2)
内側の選択ではテーブル 2 からすべての ID が選択され、外側の選択では ID がテーブル 2 に存在しない返された行がベースになります。
DELETE a.*
FROM article a
LEFT JOIN category c
ON a.cat_id = c.id
WHERE c.id IS NULL
それがあなたが望むものであることを確認するために最初に変更DELETE
してください。SELECT
delete a
from article a
left outer join category c on c.id = a.cat_id
where c.id is null