Sql 删除没有引用行的行

Sql 删除没有引用行的行,sql,tsql,Sql,Tsql,假设我有一个对表pk具有fk约束的表 我想删除所有与之无关的行 是否有方法跳过违反约束的行并删除所有其他行 可能是每行都有一个事务的循环。我想您应该删除pk中没有引用行的所有行。如果是: delete from pk where not exists (select 1 from fk where fk.fk = pk.pk ); 注意:您不想在此处使用no

假设我有一个对表pk具有fk约束的表

我想删除所有与之无关的行

是否有方法跳过违反约束的行并删除所有其他行


可能是每行都有一个事务的循环。

我想您应该删除
pk
中没有引用行的所有行。如果是:

delete from pk
    where not exists (select 1
                      from fk
                      where fk.fk = pk.pk
                     );

注意:您不想在此处使用
not in
,因为
fk.fk
可能是
NULL

如果您有外键约束,则不存在违反约束的行。我可能会将您的问题解释为“删除没有引用行的行”,但您的澄清会改善问题。发布您的表结构从PK表中删除?您好,在我的示例中,有4个表可以引用PK,我可以在示例中添加“and”。@jrb。对您应该添加4个与
相关的
不存在
子句。