2014-12-02 74 views
1

我在這裏找到一個解決方案中沒有對應於具有其中id條件的另一個表中的一個表中刪除行:刪除行的SQL表不通訊員

DELETE FROM MyTable1 WHERE id=1 AND NOT EXISTS (SELECT * FROM MyTable2 WHERE id=1) 

但我有10000行這個Id在MYTABLE1是不在MyTable2中,並且非常想知道MyTable2中的哪些Id與MyTable2不相對應

如何刪除MyTable1中沒有對應的MyTable2中沒有where ID條件的所有行?

回答

1

這將刪除所有行MyTable1的ID不在MyTable2中。

DELETE FROM MyTable1 WHERE id NOT IN (SELECT id FROM MyTable2

+0

我也找到一種使用NOT EXISTS的方法。但是,讓你的想法。 – jay 2014-12-02 23:00:31

0

您可以加入的ID MyTable2並檢查ID將是無效的,或者你可以創建一個約束不允許列的table1中刪除其中ID表2中存在

+0

我找到了一種使用NOT EXISTS的方法。但是,謝謝你的想法, – jay 2014-12-02 22:58:49

1

你也可以做到這一點的NOT EXISTS。但你子查詢應該是correlated sub-query

DELETE FROM MyTable1 A 
WHERE id = 1 
     AND NOT EXISTS (SELECT 1 
         FROM MyTable2 B 
         WHERE A.id = B.id)