我有一個數據庫,其中article.cat_id
鏈接到category.id
。返回表中cat_id不能在其他表中找到的所有行
我從category
除去幾排,現在我要選擇或article
在category
不存在鏈接到id
刪除所有行。不幸的是,我不知道哪個id
已被刪除。
是否有SQL方法檢查以返回article
中的所有行,其中沒有category.id
等於article.cat_id
?
我有一個數據庫,其中article.cat_id
鏈接到category.id
。返回表中cat_id不能在其他表中找到的所有行
我從category
除去幾排,現在我要選擇或article
在category
不存在鏈接到id
刪除所有行。不幸的是,我不知道哪個id
已被刪除。
是否有SQL方法檢查以返回article
中的所有行,其中沒有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而不是DELETE a。*' - ':)' –
實際上,'a。*'也是允許的。該文檔說'tbl_name [。*] [,tbl_name [。*]] ...' – Barmar
delete a
from article a
left outer join category c on c.id = a.cat_id
where c.id is null
如果你添加一些解釋這個答案,我願意接受它;) – Keelan
@CamilStaps:完成圖片:這隻會正常工作,如果有在ID列沒有'NULL'值table_2 –
@a_horse_with_no_name啊,這是一個很好的說明,謝謝。在這種情況下,它是一個帶主鍵和自動增量的int,所以不會有NULL值,但對於未來的用戶來說這是一個好消息! – Keelan