在Oracle数据库中删除重复数据

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

Person01表:

1. 查询表中多余的重复数据,根据ID字段来判断是否重复
SELECT * FROM PERSON01 WHERE ID IN (SELECT ID FROM PERSON01 GROUP BY ID HAVING COUNT(ID) > 1)

2. 根据ID字段来判断是否重复删除表中多余的重复记录、重复记录根据ID字段来判断,多条重复记录只保留 ROWID 最小的那条
DELETE FROM PERSON01 WHERE (ID) IN (SELECT ID FROM PERSON01 GROUP BY ID HAVING COUNT(ID) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM PERSON01 GROUP BY ID HAVING COUNT(*) > 1);

3. 查询表中多余的重复数据,根据多个字段来判断是否重复
SELECT * FROM PERSON01 A WHERE (A.ID, A.PERSON01) IN(SELECT ID, PERSON01 FROM PERSON01 GROUP BY ID, PERSON01 HAVING COUNT(*) > 1)

4. 删除表中多余的重复记录,根据多个字段来判断是否重复
DELETE FROM PERSON01 A WHERE (A.ID, A.PERSON01) IN (SELECT ID, PERSON01 FROM PERSON01 GROUP BY ID, PERSON01 HAVING COUNT(*) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM PERSON01 GROUP BY ID, PERSON01 HAVING COUNT(*)>1)

5. 查询表中多余的重复数据,根据多个字段来判断是否重复,同时不包含 ROWID 最小的记录
SELECT * FROM PERSON01 A WHERE (A.ID, A.PERSON01) IN (SELECT ID, PERSON01 FROM PERSON01 GROUP BY ID, PERSON01 HAVING COUNT(*) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM PERSON01 GROUP BY ID, PERSON01 HAVING COUNT(*)>1)

二,对应的DDL与DML语句

create table PERSON01
(ID       VARCHAR2(36),NAME     VARCHAR2(200),PERSON01 VARCHAR2(200),PERSON02 VARCHAR2(200),PERSON03 VARCHAR2(200)
)
/TRUNCATE TABLE PERSON01;INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('DDBFE6B0-4A1E-4B2D-8774-8B8C791C42D1', '张一三', '01', '02', '00');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('DDBFE6B0-4A1E-4B2D-8774-8B8C791C42D1', '张一三', '01', '03', '01');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('DDBFE6B0-4A1E-4B2D-8774-8B8C791C42D1', '张一三', '02', '02', '00');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('315332A7-0A92-4BDB-8010-8254348DB52D', '李亮', '01', '02', '00');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('315332A7-0A92-4BDB-8010-8254348DB52D', '李亮', '01', '02', '00');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('818B8E20-8D38-40FD-B7FF-71D40410CF4D', '张建伟', '01', '02', '00');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('EDFBC52C-6BAA-4F22-B015-771F801866D2', '王丽娟', '01', '02', '00');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('EDFBC52C-6BAA-4F22-B015-771F801866D2', '王丽娟', '01', '02', '00');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('72AD1837-39F0-4F3F-8030-45B61834A1D0', '徐家可', '01', '02', '00');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('45059049-C54B-4A59-A8D9-8D4212AF1587', '琳琳', '01', '02', '00');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('BBC41C7B-A22A-4C5B-8712-225014505228', '赵云龙', '01', '02', '00');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('8F55D216-4921-49C7-AA85-8BABE500FD40', '欧路莎', '01', '02', '00');
INSERT INTO PERSON01(ID, NAME, PERSON01, PERSON02, PERSON03) VALUES ('8F55D216-4921-49C7-AA85-8BABE500FD40', '欧路莎', '01', '03', '00');

Oracle 数据去重相关推荐

  1. oracle 多条件去重,Oracle数据去重

    Oracle数据去重保留一条 多个条件分组 delete from M_BASEPRICE_0719_CC m where (m.brand_code,m.supplier_code,m.part_c ...

  2. oracle 数据去重方法

    1. 创建表: -- Create table create table TEST_USER (user_id NUMBER(3),user_name VARCHAR2(20),user_age NU ...

  3. oracle over函数 去重,oracle over结合row_number分区进行数据去重处理

    一.创建一个测试表A CREATE TABLE A( ID INT, NAME VARCHAR2(20) ); 二.向表中添加数据,且存在相同的数据 INSERT INTO A VALUES(1,'Y ...

  4. 数据库去重,group by、distinct、rowid的用法,oracle和mysql如何数据去重保留一条

    文章目录 数据库去重 一.Group by 1.1.概述 1.2.用法 1.3.演示 1.3.1.建表 1.3.2.查询 二.distinct 1.1.概述 1.2.用法 1.3.演示 三.rowid ...

  5. oracle字段去重查询,oracle怎么去重查询

    oracle怎么去重查询 oracle去重查询的方法是: oracle 数据库多字段去重 方法介绍:distinct 关键字.group by .row_number ()over(partition ...

  6. 一千万条数据去重_DB2千万级数据去重

    insert into FACT_WBCKTJB_TMP select * from FACT_WBCKTJB where (rq,zh)) in(select rq,zh from FACT_WBC ...

  7. Oracle数据库:oracle数据表格dmp,sql,pde格式导入与导出,视图、序列、索引等对象的导出,oracle完结,后续开启mysql的学习

    Oracle数据库:oracle数据表格dmp,sql,pde格式导入与导出,视图.序列.索引等对象的导出,oracle完结,后续开启mysql的学习 2022找工作是学历.能力和运气的超强结合体,遇 ...

  8. oracle 数据库去重查询

    oracle数据库中有如下一张表,包含id,loginid,name,researchtime等字段,其中name字段中的数据有重复,查询数据时要重复数据只取一条,利用row_number ()ove ...

  9. ORACLE 数据的逻辑组成

    数据块(block) Oracle数据块(Data Block)是一组连续的操作系统块.分配数据库块大小是在Oracle数据库创建时设置的,数据块是Oracle读写的基本单位.数据块的大小一般是操作系 ...

最新文章

  1. python爬虫一般格式
  2. c++ 动态数组初始值不为0?
  3. Kafka Partition Leader选举机制原理详解
  4. oracle varchar2() 占几个字母,Oracle number date varchar2字段类型占用空间大小
  5. 跟我学MVC系列(Repository模式、LINQ、EF、IOC框架Castle、JQuery、AJAX)(六)(应用IOC模式)...
  6. PyCharm大全(转)
  7. 大数据之 Hive 教程
  8. 记录一次iPhone5s的iCloud bypass经历
  9. Java对象数组的初始化
  10. AlphaSSL证书和GlobalSign SSL证书介绍
  11. HTML导出PDF有边框,使用jspdf导出的pdf的页面边框
  12. 程序人生——苏嵌第三天
  13. 【学生网页设计作品 】关于HTML公益主题网页设计——关爱空巢老人 5页 带表单
  14. 电子书 http://my.unix-center.net/~Simon_fu/?page_id=724
  15. 【Vue】 Vue生命周期详解
  16. DPDK mbuf引用计数出错的分析
  17. CSDN 2008英雄大会之“望穿秋水”
  18. 基于数学形态学的道路裂缝病害检测
  19. 5分钟搞定OKR工作法
  20. 谈谈什么是数据质量管理

热门文章

  1. 孙鑫 第十七课进程间通信之三 命名管道
  2. Java系列之:Collections实现斗地主游戏
  3. 欢聚时代成功上市将激发互联网“第二春”?
  4. 气传导耳机哪个牌子好?备受好评的气传导耳机推荐
  5. 【理论研究】漫谈传统IT基础设施10-存储(04)
  6. 5G VoNR和VoLTE相比,有什么优势?
  7. 深入delphi编程
  8. 专访DSP协议周炎:分布式存储的发展需与5G、IoT并行演进 |链捕手
  9. 当前计算机用户没有管理员权限,两个方法轻松解决Win7没有管理员权限的问题...
  10. matlab 如何实现jpg图像的反转_求用MATLAB实现图片的水平翻转、左右翻转