jer*_*e78 5 sql t-sql sql-server sql-server-2005
这是针对 MS SQL 2005 服务器的。我有一个查询正在删除表中的所有孤立记录。但是,该表具有自引用 FK。我也需要删除这些,但不清楚如何删除。当前脚本删除了所有在其他表中未显示为 FK 的记录,但我没有考虑到它自己的表中的自引用 FK。该表很简单:
PK, FK, DAta
1, NULL, jibberjab
2, 1, jibberjab2
3, 1, skdfasfa
Run Code Online (Sandbox Code Playgroud)
最简单的方法是分两步执行此操作,首先删除孤立的记录,然后删除在第一次删除后现在孤立的引用的子记录:
DELETE FROM TABLE1
WHERE NOT EXISTS (SELECT 1 FROM TABLE2 WHERE TABLE2.FK = TABLE1.PK)
DELETE FROM TABLE1
WHERE NOT EXISTS (SELECT 1 FROM TABLE1 B WHERE B.FK = TABLE1.PK)
Run Code Online (Sandbox Code Playgroud)