千家信息网

oracle中如何删除重数据

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,今天就跟大家聊聊有关oracle中如何删除重数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前期准备创建测试表create table sa
千家信息网最后更新 2025年11月07日oracle中如何删除重数据

今天就跟大家聊聊有关oracle中如何删除重数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

前期准备

创建测试表

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条

STAFFIDSTAFF

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;

结果

STAFFIDSTAFF

1 oookkk

1 a

2 s

3 ert

4 d

5 b

10 aaaa

20 sass

30 erwt

40 dsd

50 bsdf

看完上述内容,你们对oracle中如何删除重数据有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

数据 方法 内容 结果 字段 实验 两个 前期 单个 更多 知识 篇文章 行业 资讯 资讯频道 频道 进一 准备 支持 有关 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 较旧的网络安全标准 dns服务器双机热备 网络营销缺乏网络技术人才 数据库表为什么不能更改 全国网络安全法知识竞赛广东赛区 手机查找服务器归属地 网络技术挑战作品 南通政务软件开发技术 在用户访问数据库数据的过程中 html5数据库对比 艺电能源互联网科技有限公司招聘 提高安全意识网络安全全面排查 巨杉数据库简介 上海良将网络技术 tcp是网络安全协议吗 数据库为什么会存在更新丢失 如果网络安全上网 大宇宙软件开发面试笔试题 讯虎网络技术 原神能跟别的服务器联机吗 网络安全教育公益讲座临汾教育局 网贷软件开发怎么判 信用卡申请渠道显示数据库1 怎么落实网络安全法 拨号失败原因服务器无响应 华为手机6g网络技术 国防科技大学互联网大会 嵌入式软件开发工作经历如何写 navcat15支持什么数据库 按键控制彩灯软件开发流程图
0