Sql 从表中删除孤立项

Sql 从表中删除孤立项,sql,sql-server,tsql,sql-delete,Sql,Sql Server,Tsql,Sql Delete,我正试图清理一张桌子,那里有很多孤立的物品 我通过查找空值来检查是否与另一个表存在关系来实现这一点 DELETE FROM table1 LEFT JOIN table2 ON table1.ID = table2.ID WHERE table2.ID IS NULL 我得到一个错误,左侧外部联接无效 我正在寻找其他方法的建议,我可以从这段破裂的关系中删除这些孤儿 DELETE FROM table1 WHERE NOT EXISTS (SELECT NULL

我正试图清理一张桌子,那里有很多孤立的物品

我通过查找空值来检查是否与另一个表存在关系来实现这一点

   DELETE FROM table1 
LEFT JOIN table2 ON table1.ID = table2.ID
    WHERE table2.ID IS NULL
我得到一个错误,左侧外部联接无效

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

DELETE  FROM        table1
WHERE NOT EXISTS (SELECT NULL FROM table2 WHERE table1.ID = table2.ID)

如果您想使用相同的语法,可以这样做:

DELETE a 
FROM table1 a  
LEFT JOIN table2 b 
ON a.id = b.id 
WHERE b.id IS NULL 

表1应该是包含孤立记录的子表。表2是父表

    DELETE ChildTable  
    FROM Table1 ChildTable    
    LEFT JOIN Table2 ParentTable 
    ON ChildTable.id = ParentTable.id 
    WHERE ParentTable.id IS NULL 
一篇非常有用的文章。

我不明白为什么,但这比@Maziataheribkenar解决方案运行得快得多。SQL Server中的查询计划在您和他的之间略有不同,但在我的世界中,您的运行速度要快得多+1@Smitty奇怪的是,我会认为这是相同的,这是做这件事的方法。子查询是此作业的错误工具。mysql workbench的响应:“您使用的是安全更新模式,并且您试图更新一个没有使用键列禁用安全模式的表,请在“首选项->SQL编辑器”中切换该选项,然后重新连接。”我不想禁用安全模式,这听起来很。。。不安全。