sql查询重复记录、删除重复记录方法大全

  查找所有重复标题的记录:

?

1

SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC

  一、查找重复记录

  1、查找全部重复记录

?

1

Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)

  2、过滤重复记录(只显示一条)

?

1

Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title)

  注:此处显示ID最大一条记录

  二、删除重复记录

  1、删除全部重复记录(慎用)

?

1

Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)

  2、保留一条(这个应该是大多数人所需要的 ^_^)

?

1

Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)

  注:此处保留ID最大一条记录

  三、举例

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

?

1

select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

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

?

1
2

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、查找表中多余的重复记录(多个字段)

?

1

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

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

?

1
2

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最小的记录

?

1
2

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)

  四、补充

  有两个以上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

  1、对于第一种重复,比较容易解决,使用

?

1

select distinct * from tableName

  就可以得到无重复记录的结果集。

  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

?

1
2
3
4

select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp

  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

  2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

?

1
2
3

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 where autoID in(select autoID from #tmp2)

时间: 2024-10-03 22:09:34

sql查询重复记录、删除重复记录方法大全的相关文章

在线等待..sql 插入的时候删除重复

问题描述 在线等待..sql 插入的时候删除重复 NSERT INTO AccountPayable(SupplierName,BankAccount,Account,AccountPayables,UID) SELECT ientry.SupplierName,ientry.BankAccount,ientry.Account,SUM(InvoiceValue) AS AccountPayable,usr.PUserRName as UID FROM InvoiceEntry ientry I

[华为机试练习题]15.删除重复字符/删除重复字符串

题目 题目标题: 删除重复字符 给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,输出处理后的字符串.需要保证字符出现的先后顺序,并且区分大小写. 详细描述: 接口说明 原型: int GetResult(const char *input, char *output) 输入参数: input 输入的字符串 输出参数(需考虑指针指向的内存区域是否有效): output 输出的字符串 返回值: 0 成功 -1 失败及异常 举例: 输入: abadcbad,那么该单词中红色部分的

SQL Server中快速删除重复记录的方法

开发人员的噩梦--删除重复记录 想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确.解决该问题的办法就是将这些重复的记录删除,只保留其中的一条. 在SQL Server中除了对拥有十几条记录的表进行人工删除外,实现删除重复记录一般都是写一段代码,用游标的方法一行一行检查,删除重复的记录.因为这种方法需要对整个表进行遍历,所以对于表中的记录数不是很大的时候还是可行的,如果一张表的数据达到上百万条,用游标的方法来删除简直是个

在SQL Server中快速删除重复记录

server|重复|重复记录 开发人员的噩梦--删除重复记录 想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确.解决该问题的办法就是将这些重复的记录删除,只保留其中的一条. 在SQL Server中除了对拥有十几条记录的表进行人工删除外,实现删除重复记录一般都是写一段代码,用游标的方法一行一行检查,删除重复的记录.因为这种方法需要对整个表进行遍历,所以对于表中的记录数不是很大的时候还是可行的,如果一张表的数据达到上百万

SQL Server中快速删除重复记录

删除重复记录 想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确.解决该问题的办法就是将这些重复的记录删除,只保留其中的一条. 在SQL Server中除了对拥有十几条记录的表进行人工删除外,实现删除重复记录一般都是写一段代码,用游标的方法一行一行检查,删除重复的记录.因为这种方法需要对整个表进行遍历,所以对于表中的记录数不是很大的时候还是可行的,如果一张表的数据达到上百万条,用游标的方法来删除简直是个噩梦,因为它会执行

解决SQL查询安全性及性能优化实现方法

SQL注入的原理 什么SQL注入 将SQL代码插入到应用程序的输入参数中,之后,SQL代码被传递到数据库执行.从而达到对应用程序的攻击目的. 注入原理 常见攻击方法 检测是否可以注入[检测注入点] 示例:http://192.168.0.1/temp.aspx?id=a or 1=1-- 如果上面语句可以执行说明可以实现注入,则可以   利用系统过程.系统表注入数据库 示例[给系统添加一个用户,黑客可以实现远程登录控制服务器]:http://192.168.0.1/temp.aspx?id=1;

sql server 2008 R2删除重复数据的方法

推荐方法3 --方法1: SELECT  * FROM    ( SELECT    Row_Number() OVER ( PARTITION BY [orderno] ORDER BY ( SELECT                                                              0                                                              ) ) AS RowNO ,        

word多余空白页删不掉怎么办 word删除空白页方法大全

方法一:按Delete 在Word中遇到空白页时,一般来说Delete键就能解决. 方法二:删除分页符 有时候空白页是相当顽固的,Delete键根本无法与之相抗衡,这时一般问题就出现在"分页符"上了.只要删除了分页符就可以了. 通常情况下,我们可以去到普通视图下或者打开编辑标记,即可看到分页符,只要到空白页顶部按Backspace键(一次不行就按两次),就能删除分页符了. 当然,如果分页符很多,那就可以采用编辑-替换-高级-特殊字符-人工分页符-全部替换就可以了. 方法三:缩小表格 若

SQL Server查找与删除表重复记录sql语句

在该示例中,我们将使用下表,它具有重复的 PK 值.在该表中,主键是两列(col1.col2).我们无法创建唯一索引或主键约束,因为这两行具有重复的 PK.该过程演示如何识别和删除重复的主键.    代码如下 复制代码 create table t1(col1 int, col2 int, col3 char(50)) insert into t1 values (1, 1, 'data value one') insert into t1 values (1, 1, 'data value o

SQL 重复记录问题的处理方法小结_MsSql

1.查找重复记录 ①如果只是不想在查询结果中存在重复记录, 可以加Distinct select distinct * from TestTable ②如果是想查询重复的记录及其数量 select UserID,UserName,count(*) as '记录数' from TestTable Group by UserID,UserName having count(*)>1 ③ID不重复, 但是字段重复的记录只显示一条 select * from TestTable where UserID