我有一个临时表,看起来像下面的样子:
SheetID和PersonID是唯一的,因此通过查看以上数据,您可以看到它们是重复的。在我正在查看的数据中,上面有很常见的数据,那里有重复的记录,名字和姓氏为NULL。这些行没有ID列。
如何删除这些记录?
答案 0 :(得分:0)
如果要删除两列中任何一列名称缺失的重复项,可以使用:
delete from t
where t.surname is null and
(exists (select 1
from t t2
where t2.sheetId = t.sheetId and t2.surname is not null
) or
exists (select 1
from t t2
where t2.personid = t.personid and t2.surname is not null
)
);
注意:我将存在分为两个子句,以便数据库可以在(sheetid, surname)
和(personid, surname)
上使用索引(如果有)。
我还猜测仅仅检查姓氏是否足够就可以了。