SQL:如果一个组符合条件,如何删除该组中的所有项?

SQL:如果一个组符合条件,如何删除该组中的所有项?,sql,group-by,conditional-statements,Sql,Group By,Conditional Statements,我希望创建一个功能,可以删除组中的所有项目,如果其中任何一个符合特定条件 具体来说,我有一个数据集“family”,如果该家庭包含双胞胎,我想删除该家庭的所有成员 数据集的一部分如下所示: 受试者ID 母亲身份证 合子性 1001 2001 MZ 1002 2001 MZ 1003 2001 非双胞胎 1004 2002 非双胞胎 1005 2002 非双胞胎 使用存在: delete from family where exists (select 1

我希望创建一个功能,可以删除组中的所有项目,如果其中任何一个符合特定条件

具体来说,我有一个数据集“family”,如果该家庭包含双胞胎,我想删除该家庭的所有成员

数据集的一部分如下所示:

受试者ID 母亲身份证 合子性 1001 2001 MZ 1002 2001 MZ 1003 2001 非双胞胎 1004 2002 非双胞胎 1005 2002 非双胞胎
使用
存在

delete from family 
    where exists (select 1
                  from family f2
                  where f2.mother_id = family.mother_id and
                        f2.ZygositySR = 'MZ'
                 );

如果
存在
不起作用方法中的替代
如何

delete from family
where mother_Id in (select Mother_Id from family where zygosity_SR='MZ')

当我运行该代码时,它会删除数据集中的所有主题,您有什么关于如何修复此问题的提示吗?我还得到一个错误:这个DELETE/INSERT语句递归地引用目标表。这可能导致数据完整性问题“非常感谢much@Randy…这是一种奇怪的行为。这是标准的SQL——因此我可以理解它可能无法运行(某些功能不受支持)但它不能做任何其他事情。您可能需要创建一个临时数据集来执行此操作。这正确地删除了“MZ”双胞胎,但没有删除他们的“NotTwin”兄弟姐妹。您认为我需要替换“Mother_ID”吗“在其中一个位置删除MZ孪生兄弟姐妹?多谢各位much@Randymaybe它就这么简单-编辑成一个没有任何关联的更简单的查询,我想这就是你想要的。