如何使用SQL根据2列上的条件删除重复项
我有下表。我想删除重复的行并保留Name1=Name2的行。因此,在下面的示例中,应删除第2行和第4行如何使用SQL根据2列上的条件删除重复项,sql,postgresql,duplicates,sql-delete,Sql,Postgresql,Duplicates,Sql Delete,我有下表。我想删除重复的行并保留Name1=Name2的行。因此,在下面的示例中,应删除第2行和第4行 ID | Name1 | Name2 1 | n1 | n1 1 | n1 | n2 2 | n1 | n1 2 | n1 | n2 如何使用SQL查询实现这一点?我认为这符合您的要求: delete from t where t.name1 <> t.name2 and exists (select 1
ID | Name1 | Name2
1 | n1 | n1
1 | n1 | n2
2 | n1 | n1
2 | n1 | n2
如何使用SQL查询实现这一点?我认为这符合您的要求:
delete from t
where t.name1 <> t.name2 and
exists (select 1
from t t2
where t2.id = t.id and
t2.name1 = t2.name2
);
谢谢这是可行的,但我能问你一个相关的问题吗?
select t.*
from t
where t.name1 = t.name2 or
not exists (select 1
from t t2
where t2.id = t.id and
t2.name1 = t2.name2
);