Firebird Sql删除重复记录

Firebird Sql删除重复记录,sql,duplicates,firebird,sql-delete,Sql,Duplicates,Firebird,Sql Delete,如何删除重复记录 我正在使用此查询,但它删除的内容太多 delete from adaparselkomsulari where sn not in (select min(sn) from adaparselkomsulari group by sinirtipi, komsuadi); 我想删除两列共有的记录 这怎么办 delete from adaparselkomsulari a1 where exists(s

如何删除重复记录

我正在使用此查询,但它删除的内容太多

delete from adaparselkomsulari
where sn not in (select min(sn)
                 from adaparselkomsulari
                 group by sinirtipi, komsuadi);
我想删除两列共有的记录

这怎么办

delete from adaparselkomsulari a1
    where exists(select first 1 1 from adaparselkomsulari a2
                 where a2.sinirtipi = a1.sinirtipi and  a2.komsuadi=a1.komsuadi 
                 and a1.sn<>a2.sn)

你需要在这里检查组计数,而不是在太宽。你能举个例子吗?可能只有一个
的计数(sn)>1
缺失,或者任何存在不止一次的值。你使用的是哪个Firebird版本?我在Firebird 2.5和Firebird 3.0上尝试了你的查询,它们都产生了预期的结果(请注意,图像中保留SN=478的预期是错误的,它应该是SN=476)。您是否有关于
SINIRTIPI
和/或
KOMSUADI
的索引?
delete from adaparselkomsulari a1
    where (select count(*) from adaparselkomsulari a2
                 where a2.sinirtipi = a1.sinirtipi and  a2.komsuadi=a1.komsuadi)>1