我正在尝试清理一个有很多孤儿项目的桌子。
我正在通过查找空值来检查是否与另一个表有关系。
DELETE FROM table1
LEFT JOIN table2 ON table1.ID = table2.ID
WHERE table2.ID IS NULL
我收到左外连接无效的错误。
我正在寻找关于我可以从这种破碎的关系中删除这些孤儿的其他方法的建议
答案 0 :(得分:21)
如果你想使用相同的语法,可以采用以下方法:
DELETE a
FROM table1 a
LEFT JOIN table2 b
ON a.id = b.id
WHERE b.id IS NULL
答案 1 :(得分:12)
试试这个:
DELETE FROM table1
WHERE NOT EXISTS (SELECT NULL FROM table2 WHERE table1.ID = table2.ID)
答案 2 :(得分:0)
表1应该是包含孤立记录的子表。表2为父表。
DELETE ChildTable
FROM Table1 ChildTable
LEFT JOIN Table2 ParentTable
ON ChildTable.id = ParentTable.id
WHERE ParentTable.id IS NULL
非常有帮助的文章。 SQL JOINs make it easy to find and fix missing data