清除冗余记录的SQL语句

问题: 设表 T 中有五个字段 A , B , C , D , ID ,其中 ID 字段是为自动增量整型字段 ( 唯一值 ) 。业务数据生成时有重复插入现象,现需对 A 、 B 、 C 、 D 四字段完全一样的脏数据进行清理,要求设计一 SQL 语句,对四个字段完全一样的记录,仅保留 ID 最小的一条,其余作删除处理。

DELETE FROM T WHERE [ID] IN
(
select [ID] from T where A in
(select A from T Group By A,B,C,D Having count()>1)
and [ID]<>
(select min(ID) as minID from T Group By A,B,C,D Having count(
)>1)
)

更正:
delete from T
where T.ID not in (select min(ID) from T group by T.A,T.B,T.C,T.D)

Published At
Categories with 数据库类
comments powered by Disqus