oracle数据库中如何用sql语句查出重复字段以及如何删除?

oracle数据库中如何用sql语句查出重复字段以及如何删除?,第1张

查询可用group by语句,删除则用delete语句。

1、创建测试表,插入测试数据

create table test

(id int,

name varchar2(20))

insert into test values (1,'张三')

insert into test values (1,'张三')

insert into test values (2,'李四')

insert into test values (2,'李四')

insert into test values (3,'王五')

insert into test values (3,'王五')

insert into test values (3,'王五')

insert into test values (4,'赵六')

commit

2、查询重复数据,用语句:

select id,name from test group by id,name having count(*)>1

结果:

3、删除重复记录用语句:

delete from test where rowid not in (select min(rowid) from test group by id,name)

commit

这个只会删除前两条数据

也就是第一,二行的那两条

你可以验证一下

select

rowid,table_name.*

from

table_name

执行完把几个rowid记下

然后执行你的删除语句,你看最后保留下来的是后两行数据

rowid是记录每条数据的物理位置,你说的把两条1,2删除,不知道你是怎么理解的呢?

oracle的查询sql怎么去重复数据

select * from table t1

where not exists (select 1 from table t2 where t1.colA=t2.colA and t1.colB=t2.colB and t1.colC=t2.colC and t2.rowid>t1.rowid)

大概酱紫吧。好久没用oracle了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10003590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存