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编辑器”中切换该选项,然后重新连接。”我不想禁用安全模式,这听起来很。。。不安全。