生在新中国,长在红旗下

一段好的代码,不在于它的设计有多么巧妙,不在于它的算法有多么高深,而在于它可以被几千个人同时开发10年,并且在持续添加功能的过程中,不会因为过于混乱而导致出现了重写的需要
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

查询及删除重复记录的SQL语句

Posted on 2018-06-25 11:05  做楼主很危险  阅读(12453)  评论(0编辑  收藏  举报

1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断

select * fromwhere Id in (select Id fromgroup byId having count(Id) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录

DELETE fromWHERE (id) IN ( SELECT id FROMGROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROMGROUP BY id HAVING COUNT(*) > 1);

3、查找表中多余的重复记录(多个字段)

select * from 表 a where (a.Id,a.seq) in(select Id,seq fromgroup by Id,seq having count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

delete from 表 a where (a.Id,a.seq) in (select Id,seq fromgroup by Id,seq having count(*) > 1) and rowid not in (select min(rowid) fromgroup by Id,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select * from 表 a where (a.Id,a.seq) in (select Id,seq fromgroup by Id,seq having count(*) > 1) and rowid not in (select min(rowid) fromgroup by Id,seq having count(*)>1)