从表中删除孤儿

时间:2011-07-03 16:23:25

标签: sql sql-server tsql sql-delete

我正在尝试清理一个有很多孤儿项目的桌子。

我正在通过查找空值来检查是否与另一个表有关系。

   DELETE FROM table1 
LEFT JOIN table2 ON table1.ID = table2.ID
    WHERE table2.ID IS NULL

我收到左外连接无效的错误。

我正在寻找关于我可以从这种破碎的关系中删除这些孤儿的其他方法的建议

3 个答案:

答案 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