sql查询重复记录方法大全_第1页
sql查询重复记录方法大全_第2页
sql查询重复记录方法大全_第3页
sql查询重复记录方法大全_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、sql 查询重复记录方法大全(2010-12-03 16:14:01)标签: 分类: SQL Server杂谈查找所有重复标题的记录:SELECT *FROM t_info aWHERE (SELECT COUNT(*)FROM t_infoWHERE Title = a.Title) > 1)ORDER BY Title DESC一。查找重复记录1。查找全部重复记录Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1) 2。过滤重复记录 (只显示一条 )Select *

2、From HZT Where ID In (Select Max(ID) From HZT Group By Title) 注:此处显示 ID 最大一条记录二。删除重复记录1。删除全部重复记录(慎用)Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)2。保留一条(这个应该是大多数人所需要的A A)Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)注:此处保留 ID 最大一条记录1、查找表中多余的重复记录,重

3、复记录是根据单个字段(peop leld)来判断select * from peoplewhere peopleId in (select peopleId from people group bypeopleId having count(peopleId) > 1)2、删除表中多余的重复记录,重复记录是根据单个字段(peopleld)来判断,只留有 rowid最小的记录delete from peoplewhere peopleId in (select peopleId from people group by peopleId having count(peopleId) >

4、; 1)and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)3、查找表中多余的重复记录多个字段)select * from vitae awhere (a.peopleId,a.seq) in(select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)4、删除表中多余的重复记录多个字段),只留有rowid 最小的记录delete from vitae awhere

5、(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 vi

6、tae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)补充:有两个以上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记 录,比如 Name 字段重复,而其他字段不一定重复或都重复可以忽略。1、对于第一种重复,比较容易解决,使用 select distinct * from tableName就可以得到无重复记录的结果集。如果该表需要删除重

7、复的记录(重复记录保留1 条),可以按以下方法删除 select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmpdrop table #Tmp发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下假设有重复的字段为 Name,Address,要求得到这两个字段唯一的结果集 select identity(int,1,1) as autoID, * into #Tmp from tableName select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID select * from #Tmp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论