`
m635674608
  • 浏览: 5041709 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

SQL找出重复数据只保留一条

    博客分类:
  • sql
 
阅读更多
用SQL语句,删除掉重复项只保留一条

在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢
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   peopleName in (select peopleName    from people group by peopleName      having count(peopleName) > 1)
and   peopleId not in (select min(peopleId) from people group by peopleName     having count(peopleName)>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)   

6.消除一个字段的左边的第一位:

update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'

7.消除一个字段的右边的第一位:

update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'

8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录
update vitae set ispass=-1
where peopleId in (select peopleId from vitae group by peopleId

 

select 
*

from r_people_report_bak ppp where 1=1
and length(ppp.reporting_period)<=6
and ppp.organization_code  || '_' ||
to_char(to_date(ppp.reporting_period ,'YYYY-mm'),'yyyy') || '-' || to_char(to_date(ppp.reporting_period ,'YYYY-mm'),'mm')
|| '_' || ppp.datilor_all
in (

select pp.organization_code || '_' || pp.aa || '_' || pp.datilor_all from (
select p.people_id,p.organization_code,p.datilor_all,

to_char(to_date(p.reporting_period ,'YYYY-mm'),'yyyy') || '-' || to_char(to_date(p.reporting_period ,'YYYY-mm'),'mm') aa
from r_people_report_bak p 
where  p.reporting_period is not null ) pp
group by pp.aa ,pp.organization_code,pp.datilor_all
having count(1) > 1 )

 

 

 

分享到:
评论

相关推荐

    删除数据库中重复的数据(只保留一条)

    在数据库管理过程中,经常会遇到需要清理数据的情况,其中一种常见需求就是删除数据库中的重复记录,同时确保每条数据的关键字段只保留一条记录。这种操作在维护数据一致性、提高查询效率等方面具有重要意义。根据...

    Oracle查询重复数据并删除,只保留一条记录.docx

    Oracle 查询重复数据并删除,只保留一条记录 Oracle 是一种关系型数据库管理系统,广泛应用于企业级数据库管理。然而,在实际应用中,数据重复问题经常会出现,例如在资源目录在线编目的资源项子表中存在多条重发...

    删除表中重复数据sql语句

    - **保留第一条重复记录** ```sql SELECT identity(int, 1, 1) AS autoID, * INTO #Tmp FROM table_Name; SELECT MIN(autoID) AS autoID INTO #Tmp2 FROM #Tmp GROUP BY Name, autoID; SELECT * FROM #Tmp ...

    sqlserver中重复数据值只取一条的sql语句

    当数据库表中的某些列有重复的值时,我们可能需要仅选取其中的一条记录,例如,选择每组重复数据的第一条或者最后一条。题目中提到的SQL语句就是解决这类问题的一个示例。 首先,我们创建一个名为`TestData`的数据...

    sqlserver清除完全重复的数据只保留重复数据中的第一条

    在SQL Server中,有时我们需要处理重复数据,确保数据库中只保留每组重复数据的一个实例,通常是最早或最新的记录。在给定的标题和描述中,我们看到一个具体的方法来实现这个目标,即通过创建临时表并利用`identity`...

    MySQL 查询重复内容只显示一条

    2. **查找重复数据**:要找出表中的重复数据,可以使用`GROUP BY`语句配合`HAVING`子句。假设我们有一个名为`users`的表,包含`name`和`email`字段,查询语句如下: ```sql SELECT name, email, COUNT(*) FROM ...

    sql 查询重复数据

    如果只想保留一条重复记录,可以使用以下 SQL 语句: ```sql DELETE HZT WHERE ID Not In (SELECT Max(ID) FROM HZT GROUP BY Title); ``` 查找表中多余的重复记录 如果想查找表中多余的重复记录,可以使用...

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

    sql 查出一张表中重复...2、查询出所有数据进行分组之后,和重复数据的重复次数的查询数据,先列下: select count(username) as '重复次数',username from xi group by username having count(*)&gt;1 order by userna

    sql查询重复记录方法大全

    - 这种方法可以用于只保留每组中的一条记录。 #### 方法三:删除具有重复值的记录 **SQL语句**: ```sql DELETE FROM t_info WHERE Title IN (SELECT Title FROM t_info GROUP BY Title HAVING COUNT(*) &gt; 1); ...

    sql+如何去重复数据,数据库去重复数据

    使用`ROW_NUMBER()`函数去除基于`employee_id`和`order_date`的重复记录,并保留每组中的第一条记录: ```sql WITH cte AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY employee_id, order_date ORDER BY ...

    mysql查找删除重复数据并只保留一条实例详解

    本文将详细介绍如何在MySQL中查找并删除重复数据,同时只保留其中一条,具体以实例进行解析。 首先,假设我们有一个名为`test`的表格,包含以下字段:`school_id`、`school_name`、`total_student`和`test_takers`...

    解决Oracle删除重复数据只留一条的方法详解

    查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) &gt; 1)2、删除表中多余的重复记录,...

    sql去掉重复的数据 完全相同的数据去掉重复 及优化

    然后,通过`DELETE`语句删除了行号大于1的记录,即除了每组的第一条记录外的所有记录。 #### 三、高级技巧与优化 ##### 3.1 使用`ROW_NUMBER()`函数 在给定的部分内容中,使用了`ROW_NUMBER()`函数来标记重复记录...

    SQL语句实现删除重复记录并只保留一条

    本文将详细介绍如何使用SQL语句删除重复记录并仅保留一条。 首先,我们来看一种常见的实现方式,例如在`WeiBoTopics`表中删除重复记录并保留Id最大的一条。以下是一个SQL查询示例: ```sql DELETE FROM ...

    sql+如何去重复数据

    在SQL中,处理重复数据是常见的数据清洗任务。当我们面对数据表中存在多条相同记录的问题时,需要采取策略来去除这些重复项,确保数据的唯一性和准确性。以下是一些关于如何在SQL中去重的关键知识点: 1. **...

    一条SQL清除(单字段、多字段)重复数据的办法.txt

    本文将详细解析如何通过SQL语句来有效地清除单字段或多字段的重复数据,确保数据库中的每条记录都是独一无二的。 ### 理解重复数据 在数据库中,重复数据指的是具有相同属性值的一组记录。这些记录可能存在于同一...

    删除Access数据库中重复的数据

    3. **查找重复数据**:在Access中,可以使用查询来找出重复数据。创建一个“选择查询”,在查询设计视图中,选择那些可能包含重复数据的字段,并添加计算字段来检测重复。例如,你可以创建一个计算字段,公式为`...

    sql查询重复记录语句

    #### 方法四:保留一条重复记录并删除其余记录 在某些情况下,我们需要保留一组重复记录中的一条,而删除其他重复记录。这可以通过以下SQL语句实现: ```sql DELETE FROM HZT WHERE ID NOT IN (SELECT MAX(ID) ...

Global site tag (gtag.js) - Google Analytics