、查找表中多余的重复记录,重复记录是根据单个字段(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. ORACLE数据库管理常用查询语句

    /*查看表空间的名称及大小*/ SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tabl ...

  2. maven配置详解

    什么是pom?     pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的 ...

  3. C语言一个双向链表的实现

    首先编写头文件,头文件里做相关的定义和声明,DList.h内容如下: #ifndef DList_H #define DList_H typedef int Item; typedef struct ...

  4. android GifView分享

    gif图动画在android中还是比较常用的,比如像新浪微博中,有很多gif图片,而且展示非常好,所以我也想弄一个.经过我多方的搜索资料和整理,终于弄出来了,其实github上有很多开源的gif的展示 ...

  5. 【Unity Shaders】Shader学习资源和Surface Shader概述

    写在前面 写这篇文章的时候,我断断续续学习Unity Shader半年了,其实还是个门外汉.我也能体会很多童鞋那种想要学好Shader却无从下手的感觉.在这个期间,我找到一些学习Shader的教程以及 ...

  6. SDL2源代码分析6:复制到渲染器(SDL_RenderCopy())

    ===================================================== SDL源代码分析系列文章列表: SDL2源代码分析1:初始化(SDL_Init()) SDL ...

  7. OC可点击的两种轮播图效果

    基本上,每一个APP都有一个轮播图的效果展示,一般都是用来展示图片的一些信息,然后可以点击查看或购买,所以在此我将这种轮播图进行了一个类的封装,效果包含两种形式:第一种,来回轮转样式,第二种,一个方向 ...

  8. 【OpenCV文档】用于角点检测的Fast算法

    原文地址:http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_fast/py_fast.html#fast-algorithm- ...

  9. Java由先序序列和中序序列还原二叉树

    还原本来的二叉树并不是一个非常简单的事,虽然思想比较简单,但过程却是比较繁琐.下面我拿先序序列和中序序列来讲一下原理吧. 从先序序列中我们一下子就可以得到二叉树的根节点是第一个元素,然后再中序序列中我 ...

  10. 小试ImageMagik——开发篇

    ===================================================== ImageMagick的使用和开发的文章: 小试ImageMagik--使用篇 小试Imag ...