查询数据库中重复数据
假如有这样一个表:
create table temp1
(
id int identity(1,1) primary key,
name varchar(100),
title varchar(100)
)
要删除temp1中name和title重复的数据,保留id号最大的那条,其它重复的删掉,这样的sql该如何写呢?
首先,找出重复的数据:
select id from temp1 a where exists
( select 1 from temp1 b where b.name =a.name and b.title =a.title and b.id<>a.id)
这样就找出了所有的重复数据id号,修改一下就能找出id号较小的重复数据了:
select id from temp1 a where exists
( select 1 from temp1 b where b.name =a.name and b.title =a.title and b.id>a.id)
仅仅将不等号变为>就实现了,找较大的则变为<。
这样要删除数据的id就出来了,删除就是很简单的事了:
delete temp1 where exists (select 1 from
(select id from temp1 a where exists
( select 1 from temp1 b where b.name =a.name and b.title =a.title and b.id>a.id)) c
where c.id=temp1.id)
看这样就完成了要求。个人认为not in 没有exists效率高,呵呵~尽管not in比exists方便一些,但还是坚持用exists。
分享到:
相关推荐
删除数据库中重复的数据!! 详细SQL语句....
sql+如何去重复数据数据库去重复数据数据库去重复数据
删除Access数据库中重复的数据 如图 选好数据库。MDB 路劲! 选好ID 点击删除就OK!完全自动清除重复类容
介绍删除数据库中重复数据的几个方法,删除数据库中的重复记录确实是一个比较头痛的问题,希望这些方法能够帮助你
如何高效删除Oracle数据库中的重复数据.重复数据删除技术可以提供更大的备份容量,实现更长时间的数据保留,还能实现备份数据的持续验证
是一个简单的sql语句,你可以仿照这个语句查出表里的重复数据。
绑定数据库数据重复使用的asp.net程序
可以查询表中的重复数据。一条sql语句。
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
sql 查出一张表中重复...2、查询出所有数据进行分组之后,和重复数据的重复次数的查询数据,先列下: select count(username) as '重复次数',username from xi group by username having count(*)>1 order by userna
在大型数据库中,有时我们发现自己有成千上万的重复项,因此需要进行自动重复数据删除。 为此,有必要使用一种相当可靠的方法来检测重复项,以找到尽可能多的重复项,并且其功能足以在合理的时间内运行。 本文提出...
删除数据库中重复数据的几个方法
一个自动删除Access数据库中重复的记录的源代码。在Access中一般只能查找10行大概20条重复记录,这样程序就可以任意指定表及多字段检索重复记录,并把重复的记录移除到一个临时表中,并不是进行真正删除,你可以进行...
ACCESS插入数据(文本)前重复检查ACCESS数据库插入文本字段前先检查该字段是否已经存在,防止重复录入。@易语言源码大全。
oracle数据库各种删除重复数据方法
达梦数据库查询数据库所有表名-DM7达梦数据库常用的运维SQL语句 数据库运维.pdf
C# 用SQL自动记录数据并且查询出某一列有哪些重复数据,本人实际测试能用,欢迎下载使用!
本文实例讲述了PHP实现在数据库百万条数据中随机获取20条记录的方法。分享给大家供大家参考,具体如下: 额,为什么要写这个? 在去某个公司面试时,让写个算法出来,当时就蒙了,我开发过程中用到算法的吗?又不是...
Delphi自动删除数据库中重复记录..rar`
Delphi找出数据库重复数据..rar