`
hybxiaodao
  • 浏览: 247211 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

SQL重复记录查询(转载)

SQL 
阅读更多

1 、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select   *   from
 people
where  peopleId  in  ( select   peopleId   from   people   group    by   peopleId   having    count (peopleId)  >   1
)

 例二:
 select * from testtable
 where numeber in (select number from people group by number having count (number) > 1 )
 可以查出testtable表中number相同的记录

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
)


5
、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
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
)

(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select  Name, Count ( * From  A  Group   By  Name  Having   Count ( * >   1


如果还查性别也相同大则如下:
Select  Name,sex, Count ( * From  A  Group   By  Name,sex  Having   Count ( * >   1


(三)
方法一

declare   @max   integer , @id   integer

declare  cur_rows  cursor  local  for   select  主字段, count ( * from  表名  group   by  主字段  having   count ( * > ;  1

open  cur_rows

fetch  cur_rows  into   @id , @max


while   @@fetch_status = 0

begin

select   @max   =   @max   - 1

set   rowcount   @max

delete   from  表名  where  主字段  =   @id

fetch  cur_rows  into   @id , @max

end

close  cur_rows

set   rowcount   0


方法二

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

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

select   distinct   *   from
 tableName

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

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

select   distinct   *   into  #Tmp  from
 tableName

drop   table
 tableName

select   *   into  tableName  from
 #Tmp

drop   table
 #Tmp

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

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

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

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)

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

(四)

查询重复 先把需要的数据全部查出来,然后在group by having count() 语句限制

select   *   from  tablename  where  id  in
 (

select  id  from
 tablename 

group   by
 id 

having   count (id)  >   1


)
分享到:
评论

相关推荐

    SQL重复记录查询与删除

    总之,SQL提供了多种方式来处理数据表中的重复记录,包括查询和删除。选择哪种方法取决于具体的需求,例如是否考虑多个字段的重复,是否保留特定的重复记录等。在实际操作中,务必谨慎执行删除操作,确保不会丢失...

    sql查询表中某字段下所有重复的记录

    sql查询表中某字段下所有重复的记录,删除某字段下重复记录最小的那笔记录

    sql 查询重复数据

    SQL 查询重复数据 在数据库中,查询和处理重复数据是一项常见的任务。本文将详细介绍查询和处理重复数据的方法,包括查找所有重复记录、查找重复记录、删除重复记录等。 查找所有重复记录 使用以下 SQL 语句可以...

    SQL重复记录查询的几种方法

    SQL重复记录查询的几种方法 SQL重复记录查询是数据库管理中非常重要的一方面,今天我们将讨论各种方法来查询和删除重复记录。 一、查找表中多余的重复记录 查找表中多余的重复记录可以使用以下方法: ```sql ...

    查询及删除重复记录的SQL语句.

    Oracle 数据库提供了一系列 SQL 语句来帮助我们查询和删除这些重复的记录。以下是一些常用的 SQL 技巧,用于处理重复记录的问题。 1. **查询重复记录**: 当我们想找出基于单一字段(如 `Id`)的重复记录时,可以...

    sql_查询重复记录方法大全.txt

    根据提供的文件信息,我们可以深入探讨SQL中查询重复记录的各种方法及其应用场景。首先,我们来解析一下文件中的示例代码,并在此基础上进一步扩展相关的知识点。 ### 查找所有重复标题的记录 文件中的第一个示例...

    用SQL删除重复记录的N种方法

    根据提供的标题、描述以及部分内容,本文将详细介绍使用SQL删除数据库表中的重复记录的不同方法。在实际操作中,去除重复数据是数据库管理中的常见需求之一,尤其是当数据来源于多个不同的源或者由于历史原因导致...

    使用Oracle查询并删除重复记录的SQL语句

    使用Oracle查询并删除重复记录的SQL语句 在实际应用中,删除重复记录是非常常见的操作,特别是在数据导入、数据整合和数据清洁等场景中。Oracle数据库提供了多种方式来查询和删除重复记录,本文将详细介绍这些方法...

    C# 用SQL自动记录数据并且查询出某一列有哪些重复数据

    本主题聚焦于如何在C#中利用SQL来自动记录数据,并查询出某一列中的重复数据。以下将详细讲解这一过程,以及相关知识点。 首先,我们需要理解C#和SQL的基础。C#是一种面向对象的编程语言,广泛应用于开发Windows...

    查询重复数据sql语句

    ### SQL查询重复数据的核心概念 在开始之前,我们需要了解几个关键的概念: 1. **重复数据**:指的是在数据表中存在多条完全相同的记录。 2. **唯一性**:为了确保数据的准确性,通常会设置某些字段为唯一,例如...

    四种SQL语句删除重复记录的方法

    对于重复记录的处理是维护数据库完整性和提高查询效率的重要手段之一。本文将详细介绍四种基本的SQL语句删除重复记录的方法。 #### 方法一:使用临时表删除重复记录 **步骤1:** 首先创建一个临时表`temp1`,用于...

    SQL删除重复行

    最后,为了避免重复数据的产生,最佳实践是在设计数据库时为关键字段添加唯一索引,这不仅可以防止插入重复数据,还可以提高查询性能。对于已经存在的重复数据,可以通过上述SQL语句进行清理。在执行这些操作前,...

    清除SQL数据库里的重复记录

    本教程将深入讲解如何在SQL数据库中检测并删除重复记录,以确保数据的唯一性和准确性。 首先,我们需要理解SQL中的"唯一性"。一个表的字段如果要求唯一,意味着每个值在这个字段中只能出现一次。例如,员工ID或电子...

    SQL删除重复记录的方法

    1. 首先,查询出具有重复值的记录,存储到temp1中。 ```sql select [标志字段 id],count(*) into temp1 from [表名] group by [标志字段 id] having count(*)>1 ``` 2. 然后,找出不重复的记录,也存入temp1。 `...

    SQL语句去掉重复记录,获取重复记录

    SQL语句去掉重复记录,获取重复...本文介绍了如何使用SQL语句去掉重复记录、获取重复记录,并且提供了SQL Server和Access中查询所有表名和字段名的方法。这些技术可以帮助开发者和数据库管理员更好地管理和维护数据库。

    删除表中重复数据sql语句

    下面将详细介绍如何使用SQL语句来查询和删除表中的重复数据。 ### (一)基本概念及实现方法 1. **查询表中重复数据** - **单字段重复数据查询** ```sql SELECT * FROM people WHERE peopleId IN ( SELECT ...

    sqlServer删除重复数据

    删除重复数据可以使用多种方法,包括使用 SELECT DISTINCT 语句、使用自动生成的标识符、使用游标、使用子查询等。 完全重复的记录 完全重复的记录是指所有字段均重复的记录。这种情况下,删除重复数据可以使用 ...

    MySQL根据某一个或者多个字段查找重复数据的sql语句

    sql 查出一张表中重复的所有记录数据 1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、...

Global site tag (gtag.js) - Google Analytics