article.cat_idにリンクされているデータベースがありますcategory.id。
からいくつかの行を削除しましたが、存在しないリンクへのリンクcategoryからすべての行を選択または削除したいと考えています。残念ながら、どのs が削除されたのか正確にはわかりません。articleidcategoryid
に等しいものarticleがないすべての行を返すようにチェックする SQL の方法はありますか?category.idarticle.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