Oracle 测试删除重复数据
SQL>create table test
(na1 int,na2 int,na3 int,na4 int,na5 int,na6 int,na7 int,na8 int,na9 int);
SQL>insert into test values ('1','1','1','1','1','1','1','1','1');
SQL>insert into test values ('1','1','1','1','1','1','1','1','2');
SQL>insert into test values ('1','1','1','1','1','1','1','1','3');
SQL>insert into test values ('1','1','1','1','1','1','1','1','4');
SQL> select * from test;
NA1 NA2 NA3 NA4 NA5 NA6 NA7 NA8 NA9
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 2
1 1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1 4
1 1 1 1 1 1 1 1 4
删除na9单列重复的字段
delete from test
where na9 in (select na9 from test group by na9 having count(na9) > 1)
and rowid not in (select min(rowid) from test group by na9 having count(na9)>1);
SQL> select * from test;
NA1 NA2 NA3 NA4 NA5 NA6 NA7 NA8 NA9
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 2
1 1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1 4
再插入几行重复的数据
SQL>insert into test values ('1','1','1','1','1','1','1','2','4');
SQL>insert into test values ('1','1','1','1','1','1','1','3','4');
SQL> select * from test;
NA1 NA2 NA3 NA4 NA5 NA6 NA7 NA8 NA9
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
1 1 1 1 1 1 1 2 4
1 1 1 1 1 1 1 3 4
1 1 1 1 1 1 1 2 4
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 2
1 1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1 4
1 1 1 1 1 1 1 1 4
1 1 1 1 1 1 1 3 4
13 rows selected.
删除na9列的重复数据
SQL>delete from test
where na9 in
(select na9 from test group by na9 having count(na9) > 1)
and rowid not in
(select min(rowid) from test group by na9 having count(na9)>1);
SQL> SELECT * FROM TEST;
NA1 NA2 NA3 NA4 NA5 NA6 NA7 NA8 NA9
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
1 1 1 1 1 1 1 2 4
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 2
1 1 1 1 1 1 1 1 3
生产情况往往是删除所有字段都重复的数据
SQL> delete from test a
2 where (a.na1,a.na2,a.na4,a.na3,a.na5,a.na6,a.na7,a.na8,a.na9) in
3 (select na1,na2,na3,na4,na5,na6,na7,na8,na9 from cz
4 group by na1,na2,na3,na4,na5,na6,na7,na8,na9 having count(*) > 1)
5 and rowid not in
(select min(rowid) from test group by na1,na2,na3,na4,na5,na6,na7,na8,na9 having count(*)>1); 6
8 rows deleted.
SQL> select * from test;
NA1 NA2 NA3 NA4 NA5 NA6 NA7 NA8 NA9
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
1 1 1 1 1 1 1 2 4
1 1 1 1 1 1 1 3 4
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1 4
Oracle 下删除重复数据测试
最新推荐文章于 2021-04-11 12:31:14 发布