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

select*from
people

where peopleIdin
(select peopleIdfrom peoplegroupby
peopleIdhaving
)



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

deletefrom
people

where peopleIdin
(select peopleIdfrom peoplegroupby
peopleIdhaving
)

and rowidnotin
(selectmin(rowid)from peoplegroup
)



、查找表中多余的重复记录(多个字段)

select*from
vitae a

where (a.peopleId,a.seq)in
(select peopleId,seqfrom vitaegroup
)



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

deletefrom
vitae a

where (a.peopleId,a.seq)in
(select peopleId,seqfrom vitaegroup
)

and rowidnotin
(selectmin(rowid)from vitae
group
)



、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select*from
vitae a

where (a.peopleId,a.seq)in
(select peopleId,seqfrom vitaegroup
)

and rowidnotin
(selectmin(rowid)from vitae
group
)

(二)

比方说

在A表中存在一个字段“name”,

而且不同记录之间的“name”值有可能会相同,

现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;

Select Name,Count(*)From
A Group


如果还查性别也相同大则如下:

Select Name,sex,Count(*)From
A Group


(三)

方法一

declare@maxinteger,@idinteger

declare
cur_rows cursor localforselect 主字段,count(*)from
表名 group


open
cur_rows

fetch cur_rowsinto@id,@max



begin

select@max=


setrowcount@max

deletefrom
表名 where 主字段=@id

fetch
cur_rows into@id,@max

end

close
cur_rows





  方法二



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



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

selectdistinct*
from tableName



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



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

selectdistinct*
into #Tmpfrom tableName

droptable
tableName

select*into
tableNamefrom #Tmp

droptable
#Tmp



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



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



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

)as
autoID, *
into #Tmpfrom tableName

selectmin(autoID)as
autoID into #Tmp2from #Tmp
groupby Name,autoID

select*from
#Tmpwhere autoIDin(select autoIDfrom
#tmp2)



  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)



(四)查询重复

select*from
tablenamewhere idin (

select idfrom
tablename

group
by id

having
count(id)>


)

sql记录去重(SQL查询或者删除表中重复记录)的更多相关文章

  1. MSSQL sql server 2005/2008 row_number()函数应用之–删除表中重复记录,只保留一条不重复数据

    转自:http://www.maomao365.com/?p=4942 下文主要讲述:重复数据只获取一条的方法 row_number函数在数据库中的功能是为每一行 按照一定的规则生成一个编号,我们常常 ...

  2. 查询和删除表中重复数据sql语句

      1.查询表中重复数据.select * from peoplewhere peopleId in (select   peopleId   from   people   group   by   ...

  3. SqlServer删除表中重复记录

    重复记录:有两个意义上的重复记录 一是完全重复的记录,也即所有字段均重复的记录: 二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略. 1.对于第一种重复,比较容易 ...

  4. mysql 查询及 删除表中重复数据

    CREATE TABLE `test` ( `id` INT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20) NULL DEFAULT NULL, `a ...

  5. oracle 查询及删除表中重复数据

    create table test1( id number, name varchar2(20) ); ,'jack'); ,'jack'); ,'peter'); ,'red'); insert i ...

  6. Oracle通过ROWID删除表中重复记录

    -- 1 通过ROWID删除T1表里重复的记录    SELECT ROWID,A,B--DELETE FROM  T1WHERE ROWID IN (  SELECT RD  FROM  (     ...

  7. sql删除表中重复记录只保留一条记录

    最终代码 update T_Fee set gzl_dfg_op = 'delete' where MetReadRecordID in ( select MetReadRecordID from T ...

  8. 使用oracle删除表中重复记录

    (1)使用用rowid方法 查询重复数据:select * from person a where rowid !=(select max(rowid) from person b where a.c ...

  9. Sql Server删除数据表中重复记录 三种方法

    本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1 ...

随机推荐

  1. RxJava操作符(06-错误处理)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51658235 本文出自:[openXu的博客] 目录: Catch Retry 源码下载 1 ...

  2. 2apt-get命令,deb包安装,源码安装

    1 安装卸载软件 更新源服务器列表 sudovi /etc/apt/sources.list 更新完服务器列表后需要更新下源 sudoapt-get update 更新源 sudoapt-get in ...

  3. 合成/聚合复用原则(CARP)

    组合/聚合复用原则(Composite/Aggregate Reuse Principle或CARP),就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新对象通过向这些对象的委派达到 ...

  4. Hibernate通过SQL查询常量时只能返回第一个字符的解决方法

    在Hibernate中如果通过 [java] view plaincopy session.createSQLQuery("select '合计' as name from dual&quo ...

  5. 会声会影小成果分享(那段青春岁月)——校学习部宣传视频制作&生日祝福

    大二的时候在校学习部当副部长,没有给干事们带去好的工作经验和管理方法,我净在折腾新媒体方面的东西,很惭愧的说,那时候申请了一个微信的公众号(HGXXB1314),我那时候以为自己很叼,最后是发现自己装 ...

  6. 从操作系统内核看Java非阻塞IO事件检测

    非阻塞服务器模型最重要的一个特点是,在调用读取或写入接口后立即返回,而不会进入阻塞状态.在探讨单线程非阻塞IO模型前必须要先了解非阻塞情况下Socket事件的检测机制,因为对于非阻塞模式最重要的事情是 ...

  7. FFmpeg源代码简单分析:avformat_open_input()

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  8. 最详细的制作正式版10.11 OS X El Capitan 安装U盘的方法

    原帖地址:http://bbs.feng.com/read-htm-tid-10036487.html 一.准备工作: 1.准备一个 8GB 或以上容量的 U 盘,确保里面的数据已经妥善备份好(该过程 ...

  9. 安卓自定义日期控件(仿QQ,IOS7)续

    本篇是在原来的基础上修改了界面效果,使其更加接近ios7,qq等日期选择控件,看图: 源码地址:http://download.csdn.net/detail/baiyuliang2013/87601 ...

  10. UNIX网络编程——TCP服务器“拒绝服务攻击” 解决方案

    前面的博客<<使用select和shutdown>>里面的拒绝服务型攻击也有提到. 说这是一个完全的解决方案,其实有点夸大了,但这个方案确实可以缓解TCP服务器遭受" ...