千家信息网

oracle中如何删除重数据

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天就跟大家聊聊有关oracle中如何删除重数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前期准备创建测试表create table sa
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 广州紫鲸互联网科技有限公司 江苏根荣互联网科技 科技与互联网 没上市的科技互联网公司 金融科技与互联网金融 天扬科技互联网广告 中国互联网金融科技基金 互联网公司会议桌创意科技软装饰 上海电发互联网科技有限公司 科技互联网的估值 广州慧亚互联网科技怎么样 中国的互联网科技企业的崛起 民营互联网公司国防科技 河南住房之家互联网科技 中科明德北京互联网科技 国大互联网教育科技有限公司薪资 江苏苏星互联网科技有限公司 互联网科技融合创新 广州有谷有贝互联网科技有限公司 每日互联网科技新闻 深圳九邦互联网科技有限公司 科技创新与互联网经济 平安科技 互联网 奇酷互联网科技 广州善班互联网科技 黑科技闪耀互联网之光 中国航天科技大学国际工业互联网 深圳无忧互联网科技 梅州GM互联网络科技有限公司 中天科技中国工业互联网
0