我在这里找到一个删除一个表中的行的解决方案,该表与另一个具有where id条件的表相对应:
DELETE FROM MyTable1 WHERE id=1 AND NOT EXISTS (SELECT * FROM MyTable2 WHERE id=1)
但我有大约10000行,MyTable1中的Id不在MyTable2中,并且非常想要找出MyTable1中的Id与MyTable2中的ID不对应
如何在没有where id条件的情况下删除MyTable1中与MyTable2不对应的所有行?
答案 0 :(得分:1)
这将删除MyTable1中MyTable2中不存在id的所有行。
DELETE FROM MyTable1 WHERE id NOT IN (SELECT id FROM MyTable2
)
答案 1 :(得分: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)
答案 2 :(得分:0)
你可以加入id MyTable2并检查id是否为null,或者你可以创建一个约束来禁止删除table1中存在于table2中的id的行