首页 / MYSQL / sql中查询重复记录与删除重复记录
sql中查询重复记录与删除重复记录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了sql中查询重复记录与删除重复记录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3824字,纯文字阅读大概需要6分钟。
内容图文
![sql中查询重复记录与删除重复记录](/upload/InfoBanner/zyjiaocheng/544/f9a56908cffb4efbab95cc00a003cb71.jpg)
在数据库中经常会出现一些重复记录,我有时想查询重复记录显示出来,也有时想删除重复记录,下面我来介绍如何删除与查询重复记录的方法吧。
1。查找全部重复记录
代码如下 | |
Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1) |
2。过滤重复记录(只显示一条)
代码如下 | |
Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title) |
注:此处显示ID最大一条记录
SQL Server删除重复行是我们最常见的操作之一,下面就为您介绍六种适合不同情况的SQL Server删除重复行的方法,供您参考。
1.如果有ID字段,就是具有唯一性的字段
代码如下 | |
delect table tableName where id not in ( select max(id) from table group by col1,col2,col3... ) |
group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。
2. 如果是判断所有字段也可以这样 ,【对于表中的指定的字段的进行检查是否相同】
代码如下 | |
select * into #temp from tablename group by id1,id2,.... delete tablename insert into table select * from #temp drop table #temp |
3. 首先去重复,再获取N*1条数据插入到临时表中,【对于表中的所有字段的进行检查是否相同】,再将原表的数据删除,然后将临时表的数据插入到原表,最后删除临时表。
代码如下 | |
select distinct * into #temp from tablename delete tablename go insert tablename select * from #temp go drop table #temp
|
4. 没有ID的情况
代码如下 | |
select identity(int,1,1) as id,* into #temp from tabel delect # where id not in ( select max(id) from # group by col1,col2,col3...) delect table inset into table(...) select ..... from #temp |
5. col1+','+col2+','...col5 联合主键
代码如下 | |
select * from table where col1+','+col2+','...col5 in ( select max(col1+','+col2+','...col5) from table where having count(*)>1 group by col1,col2,col3,col4 ) |
group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。
6.
代码如下 | |
select identity(int,1,1) as id,* into #temp from tabel select * from #temp where id in ( select max(id) from #emp where having count(*)>1 group by col1,col2,col3...) |
其它方法补充
1。删除全部重复记录(慎用)
代码如下 | |
Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1) |
2。保留一条(这个应该是大多数人所需要的 ^_^)
代码如下 | |
Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title) |
注:此处保留ID最大一条记录
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
代码如下 | |
select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) |
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
代码如下 | |
delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1) |
3、查找表中多余的重复记录(多个字段)
代码如下 | |
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) |
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
代码如下 | |
delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) |
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
代码如下 | |
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) |
内容总结
以上是互联网集市为您收集整理的sql中查询重复记录与删除重复记录全部内容,希望文章能够帮你解决sql中查询重复记录与删除重复记录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。