最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

sql中查询重复记录与删除重复记录

来源:动视网 责编:小采 时间:2020-11-09 09:58:10
文档

sql中查询重复记录与删除重复记录

sql中查询重复记录与删除重复记录:在数据库中经常会出现一些重复记录,我有时想查询重复记录显示出来,也有时想删除重复记录,下面我来介绍如何删除与查询重复记录的方法吧。 1。查找全部重复记录 代码如下 Select * From 表 Where 重复字段 In (Select 重复字段 From
推荐度:
导读sql中查询重复记录与删除重复记录:在数据库中经常会出现一些重复记录,我有时想查询重复记录显示出来,也有时想删除重复记录,下面我来介绍如何删除与查询重复记录的方法吧。 1。查找全部重复记录 代码如下 Select * From 表 Where 重复字段 In (Select 重复字段 From


在数据库中经常会出现一些重复记录,我有时想查询重复记录显示出来,也有时想删除重复记录,下面我来介绍如何删除与查询重复记录的方法吧。

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中查询重复记录与删除重复记录:在数据库中经常会出现一些重复记录,我有时想查询重复记录显示出来,也有时想删除重复记录,下面我来介绍如何删除与查询重复记录的方法吧。 1。查找全部重复记录 代码如下 Select * From 表 Where 重复字段 In (Select 重复字段 From
推荐度:
标签: 删除 查询 记录
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top