查询可用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了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)