前期准备 创建测试表 create table salary( staffid int, staff varchar(15) ); 模拟重复数据 insert into salary values(1,'a'); insert into salary values(2,'s'); insert into salary values(3,'ert'); insert into salary values(4,'d'); insert into salary values(5,'b'); insert into salary values(1,'a'); insert into salary values(2,'s'); insert into salary values(3,'ert'); insert into salary values(4,'d'); insert into salary values(5,'b'); insert into salary values(1,'a'); insert into salary values(2,'s'); insert into salary values(3,'ert'); insert into salary values(4,'d'); insert into salary values(5,'b'); insert into salary values(10,'aaaa'); insert into salary values(20,'sass'); insert into salary values(30,'erwt'); insert into salary values(40,'dsd'); insert into salary values(50,'bsdf'); insert into salary values(1,'oookkk'); 实验一:模拟单个字段数据重复 select * from salary; STAFFID STAFF --------------- --------------- 1 oookkk 1 a 2 s 3 ert 4 d 5 b 1 a 2 s 3 ert 4 d 5 b 1 a 2 s 3 ert 4 d 5 b 10 aaaa 20 sass 30 erwt 40 dsd 50 bsdf 21 rows selected 1.查出重复数据 方法一 SELECT * FROM salary a WHERE ((SELECT COUNT(*) FROM salary WHERE staffid = a.staffid) > 1) ORDER BY staffid 方法二 select * from salary where staffid in (select staffid from salary group by staffid having count(staffid) > 1) 删除重复数据,只保留1条,其余全部删除 方法一,通过rowid删除 delete from salary where staffid in (select staffid from salary group by staffid having count(staffid) > 1) and rowid not in (select min(rowid) from salary group by staffid having count(staffid )>1) 实验二:模拟两个个字段数据重复 1.查询重复记录 方法一 select * from salary a where (a.staffid,a.staff) in (select staffid,staff from salary group by staffid,staff having count(*) > 1) 方法二 SELECT * FROM salary a WHERE ((SELECT COUNT(*) FROM salary WHERE staffid = a.staffid and staff=a.staff) > 1) ORDER BY staffid 结果,共15条 STAFFID STAFF 1 a 1 a 1 a 2 s 2 s 2 s 3 ert 3 ert 3 ert 4 d 4 d 4 d 5 b 5 b 5 b 2.删除重复数据,只保留1条,其余全部删除 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) 3.查看删除后结果 select * from salary; 结果 STAFFID STAFF 1 oookkk 1 a 2 s 3 ert 4 d 5 b 10 aaaa 20 sass 30 erwt 40 dsd 50 bsdf
oracle删除重数据方法
来源:这里教程网
时间:2026-03-03 12:53:48
作者:
编辑推荐:
- oracle删除重数据方法03-03
- 如何把word文档中的图片拿出来的小技巧03-03
- 检查数据块损坏(Block Corruption)03-03
- 如何给你的Word添加一个常用命令菜单03-03
- GDI++引起的Word数学公式编辑器不能显示的问题03-03
- Word文档里输入平均数符号的两种方法03-03
- oracle分区表的分类及测试03-03
- Oracle11g RAC安装GI时会遇到INS-06006报错处理过程03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle11g RAC安装GI时会遇到INS-06006报错处理过程
Oracle11g RAC安装GI时会遇到INS-06006报错处理过程
26-03-03 - Oracle利用coe_load_sql_profile脚本绑定执行计划
Oracle利用coe_load_sql_profile脚本绑定执行计划
26-03-03 - Oracle静态监听和动态监听
Oracle静态监听和动态监听
26-03-03 - 静默错误:为什么看了那么多灾难,还是过不好备份这一关?
静默错误:为什么看了那么多灾难,还是过不好备份这一关?
26-03-03 - oracle删除表空间以后为什么仍然能够对表进行读写
oracle删除表空间以后为什么仍然能够对表进行读写
26-03-03 - ORACLE 18C启动数据库报错ORA-04031
ORACLE 18C启动数据库报错ORA-04031
26-03-03 - 开工大吉:Oracle 18c已经发布及新特性介绍
开工大吉:Oracle 18c已经发布及新特性介绍
26-03-03 - 如何在Word2007中快速填充表格中的序列号
如何在Word2007中快速填充表格中的序列号
26-03-03 - Oracle 12.2 How to Generate AWRs in Active Data Guard Standby Databases
- ORACLE RAC 两节点db_32k_cache_size设置不当导致表truncate失败之ORA-00379
