读书人

剔除重复数据

发布时间: 2012-08-31 12:55:03 作者: rapoo

删除重复数据
表A中有ID、NAME、CODE字段。要查出NAME、CODE字段重复的数据,重复的记录中,仅保留ID最大的,删除其它重复的数据。
查询需要删除的记录sql如下:
比较笨的SQL:

select *  from test where id in (select b.id                from test a, test b               where a.name = b.name                 and a.code = b.code               group by b.id              having count(b.id) > 1)   and id not in (select max(id)                    from test                   where id in (select b.id                                  from test a, test b                                 where a.name = b.name                                   and a.code = b.code                                 group by b.id                                having count(b.id) > 1)                   group by name, code)

改进后的SQL:
select *  from test t1 where exists (select 1          from test t2         where t1.code = t2.code           and t1.name = t2.name           and t1.id != t2.id)   and t1.id not in (select max(id) from test group by name, code)

读书人网 >其他数据库

热点推荐