`

Oracle 查询(删除)重复记录

阅读更多

      一、  在Oracle数据库中查询所谓的“重复”记录,根据判断标准可以细分为三种情况:

1.根据单个属性字段判断重复性:

   select *
  from tableName
 where columnName in (select columnName
                        from tableName
                       group by columnName
                      having count(columnName) > 1);

 

2.根据多个属性字段判断重复性:

select *
  from tableName a
 where (a.columnName1, a.columnName2) in (select columnName1, columnName2
                             from tableName
                            group by columnName1, columnName2
                           having count(*) > 1);

3.所有属性完全相同的情况:

select distinct * from td_tyorg;

利用上面的SQL语句就可以查询出不相同的记录

 

---查询重复记录---

select * from tablename where id in (
select id from tablename
group by id
having count(id) > 1;

 

二、删除重复记录:

1.删除某个字段相同记录(只留下rowid最小的记录,其中rowid为oracle系统自建的字段):

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);

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);

 

PS:如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct *
  into #Tmp
  from tableName drop table tableName
        select * into tableName from #Tmp drop table #Tmp

分享到:
评论

相关推荐

    oracle中如何删除重复的记录

    要删除Oracle数据库表中的重复记录,有几种方法可以采用: ##### 方法一:使用子查询与DELETE语句 这种方法适用于只需要删除重复记录中的某些行的情况。步骤如下: 1. **找出重复的记录**:首先,我们需要找到...

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

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

    Oracle查询重复数据与删除重复记录方法(txt)

    ### Oracle查询重复数据与删除重复记录方法 在Oracle数据库中,有时我们需要找出并处理重复的数据。这不仅可以提高数据质量,还能提升查询效率。本文将详细介绍几种常用的查询和删除Oracle数据库中重复记录的方法。...

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

    接下来,我们可以使用 DELETE 语句来删除这些重复记录,但保留 rowid 最小的记录: ```sql delete from R_RESOURCE_DETAILS where (FIELD_CODE) in (select FIELD_CODE from R_RESOURCE_DETAILS group by FIELD_...

    oracle 查询重复数据

    - **数据清洗**: 发现重复数据后,下一步通常是进行数据清洗,包括合并重复记录、删除多余条目或修正数据录入错误。 - **预防机制**: 在数据录入阶段实施数据验证规则,使用触发器或存储过程自动检测并防止重复数据...

    wxh Oracle数据库删除重复记录的方法

    根据给定的文件标题、描述和部分内容,我们可以深入探讨Oracle数据库中删除重复记录的方法,这对于维护数据完整性和提高系统性能至关重要。以下将详细介绍几种在Oracle数据库中有效删除重复记录的技术。 ### 1. ...

    oracle删除重复记录性能分析

    ### Oracle删除重复记录性能分析 #### 一、背景与需求 在数据库管理中,经常会遇到数据清理的需求,尤其是在Oracle数据库中处理重复记录时。本文旨在通过对比几种不同的方法来删除Oracle中的重复记录,并分析其...

    Oracle查询重复数据与删除重复记录方法

    ### Oracle查询重复数据与删除重复记录方法 #### 一、查询重复数据 ##### 1. 使用ROWID方法 ROWID是Oracle中一个特殊的数据类型,它代表了表中每一条记录在物理存储上的唯一地址。利用ROWID可以非常高效地查询和...

    ORACLE重复记录查询.docxORACLE

    1. **单个字段重复记录查询** 当我们需要根据单个字段(如`peopleId`)查找重复记录时,可以使用以下SQL语句: ```sql select * from people where peopleId in (select peopleId from people group by ...

    ORACLE查询删除重复记录三种方法

    例如,如果我们有一个名为table1的表,包含name1和name2字段,我们可以这样查询和删除重复记录: 查询数据: ```sql SELECT * FROM table1 a WHERE rowid != (SELECT MAX(rowid) FROM table1 b WHERE a.name1 = ...

    oracle查询重复数据方法

    例如,下面的语句可以查询出表中多余的重复记录,并删除重复记录中除了 rowid 最小的记录以外的所有记录: ```sql declare @max integer, @id integer declare cur_rows cursor local for select 主字段, count(*) ...

    oracle删除重复记录

    本文将详细介绍如何在Oracle数据库中有效地删除表内的重复记录。 ### 一、理解重复记录 在数据库中,重复记录是指具有相同字段值的一组记录。例如,在一个员工表中,如果有多个记录拥有相同的姓名、职位等信息,则...

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

    1. **查询重复记录**: 当我们想找出基于单一字段(如 `Id`)的重复记录时,可以使用如下的 SQL 语句: ```sql select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1) ``` 这个...

    Oracle数据库删除表中重复记录的方法三则.txt

    ### Oracle数据库删除表中重复记录的方法 在Oracle数据库管理中,经常会遇到需要处理表中的重复数据的情况。重复数据不仅会占用不必要的存储空间,还可能导致数据统计错误或业务逻辑混乱等问题。因此,掌握如何有效...

    plsql删除重复记录

    ### PL/SQL删除Oracle数据库中的重复记录方法详解 在日常的数据库管理与维护工作中,我们经常会遇到需要处理数据表中的重复记录的情况。特别是在大型企业级应用中,由于各种原因(如数据导入错误、系统故障等),...

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

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

    Oracle中查找和删除重复记录方法

    删除重复记录的方法原理:在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会...

    删除数据表中重复记录

    2. **标记重复记录**:可以创建一个临时表或使用子查询来标记出需要删除的重复记录。 3. **执行删除操作**:基于标记好的记录执行删除操作。 #### 示例代码解析 以下是一段示例SQL脚本,用于演示如何删除表`a`中的...

Global site tag (gtag.js) - Google Analytics