当前位置:  数据库>sqlserver

删除SQL重复记录的方法介绍

    来源: 互联网  发布时间:2014-08-29

    本文导语:  一张人员表(表名:Person),若想将姓名、身份证号、住址这三个字段完全相同的记录查找出来,sql语句如下:   代码示例: SELECT p1.*   FROM persons   p1,persons   p2   WHERE p1.idp2.id   AND p1.cardid   =   p2.cardid   AND p1.pna...

一张人员表(表名:Person),若想将姓名、身份证号、住址这三个字段完全相同的记录查找出来,sql语句如下:
 

代码示例:
SELECT p1.*  
FROM persons   p1,persons   p2  
WHERE p1.idp2.id  
AND p1.cardid   =   p2.cardid  
AND p1.pname   =   p2.pname  
AND p1.address   =   p2.address

下面,我们切入正题吧,介绍删除重复记录的方法。

在sql server中删除重复记录,可以参考如下的几种方法:
 

1,rowid方法
2,group by方法
3,distinct方法

下面我们分别来介绍,并举一些例子,供大家参考。
 
1,用rowid方法
据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:
 

代码示例:

---查询数据:
select * from table1 a where rowid !=(select   max(rowid)  
from table1 b where a.name1=b.name1 and a.name2=b.name2......)

---删除数据:
delete   from table1 a where rowid !=(select   max(rowid)  
from table1 b where a.name1=b.name1 and a.name2=b.name2......)

2,group by方法
 

代码示例:

---查询数据:
select count(num), max(name) from student --列出重复的记录数,并列出他的name属性
group by num
having count(num) >1 --按num分组后找出表中num列重复,即出现次数大于一次

---删除数据:
delete from student
group by num
having count(num) >1
---删除所有重复记录。

3,用distinct方法 -对于小的表比较有用
 

代码示例:
create table table_new as   select distinct *   from table1 minux
truncate table table1;
insert into table1 select * from table_new;

附,查询及删除重复记录的方法大全

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)

 1 2 下一页 尾页

    
 
 

您可能感兴趣的文章:

  • 删除数据库中重复记录方法介绍及代码参考
  • 用PreparedStatement ps 在数据库中插入记录,但还未提交事务,此时再用Delete语句为什么删除不了用 ps刚才插入的记录,如何可以删除未这
  • 删除重复的记录,并保存第一条记录或保存最后一条记录
  • 记录删除疑问,请您帮忙!
  • 如何查看已经删除文件的记录?
  • linux服务器清空MySQL的history历史记录 删除mysql操作记录
  • 删除重复记录
  • 删除超过30天的记录
  • 如何删除我的的登陆服务器记录
  • Android中删除文件以及文件夹的命令记录
  • 这样删除记录
  • 有没有日志会记录删除命令
  • 请问怎么用jsp语句删除oracle中的一条记录?
  • 有没有什么简便的方法可以从一个List控件中删除一条或多个记录?
  • 高分请教:请问怎么才能得到最近所有有关文件操作(新建,删除等)的记录
  • fedora 删除软件,但是不删除依赖软件 iis7站长之家
  • Oracle 如何快速查找和删除重复记录
  • php 删除记录同时删除图片文件的代码
  • 删除mysql数据库中的重复数据记录
  • 添加、删除记录和颠倒顺序,帮帮忙!
  • Oracle中用Rowid查找和删除重复记录
  • Oracle删除当前用户下所有表的方法适用于有或没有删除权限
  • MySQL防止delete命令删除数据的两种方法
  • 浅析删除表的几种方法(delete、drop、truncate)
  • jquery 删除字符串最后一个字符的方法解析
  • 重装MS SQL Server 2000前必须彻底删除原安装文件的方法
  • 求助一个方法,简单阿!!!!!有关删除文件夹的
  • oracle 彻底删除方法
  • DevExpress实现GridControl删除所有行的方法
  • 安装SQL2008时提示删除SQL2005Express工具的解决方法
  • 找用删除文件方法裁剪内核的工具
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Maps 成员 erase():删除一个元素
  • 怎么实现,动态的增加和删除input,删除时用radiobox选中,然后点删除,即可。谢谢
  • C++ MultiMaps 成员 erase():删除元素
  • 100分相送,怎么实现,动态的增加和删除input,删除时用radiobox选中,然后点删除,即可
  • C++ Double Ended Queues(双向队列) 成员 erase():删除一个元素
  • 请问:linux中的软件包安装后,怎么删除呀,直接删除吗?
  • C++ Lists(链表) 成员 erase():删除一个元素
  • jquery删除提示框(弹出是否删除对话框)
  • C++ Lists(链表) 成员 remove():从list删除元素
  • vim删除命令"d3e"为什么删除单词的数目不一致?
  • C++ Lists(链表) 成员 unique():删除list中重复的元素
  • 如何删除前面有个-的文件,我的根目录下有个文件叫 -C,请问如何删除?
  • C++ Lists(链表) 成员 pop_front():删除第一个元素
  • jquery删除提示框弹出是否删除对话框
  • C++ Priority Queues(优先队列) 成员 pop():删除第一个元素
  • GRUB的删除与逻辑驱动器存在时扩展分区的删除
  • C++ Queues(队列) 成员 pop():删除第一个元素
  • fedora 删除软件,但是不删除依赖软件
  • C++ MultiMaps 成员 clear():删除所有元素
  • linux 变量内容删除 中有关“最短数据删除”的意思
  • C++ Lists(链表) 成员 clear():删除所有元素
  • sql server 删除表1某些数据的同时自动删除表2的相关数据的sql代码


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3