您的位置:首页 > 其它

使用ROWID查找和删除重复行

2004-07-23 09:01 267 查看
SQL> create table lunar ( 2 c1 char(4), 3 c2 varchar2(20) 4 ) 5 / 表已创建。 SQL> insert into lunar values('1111','1111'); 已创建 1 行。 SQL> insert into lunar values('1112','1111'); 已创建 1 行。 SQL> insert into lunar values('1113','1111'); 已创建 1 行。 SQL> insert into lunar values('1114','1111'); 已创建 1 行。 SQL> commit; 提交完成。 SQL> 创建重复记录: SQL> insert into lunar select * from lunar; 已创建4行。 SQL> commit; 提交完成。 SQL> select rowid,c1,c2 from lunar; ROWID C1 C2 ------------------ ---- -------------------- AAAG/OAAGAAAAAMAAA 1111 1111 AAAG/OAAGAAAAAMAAB 1112 1111 AAAG/OAAGAAAAAMAAC 1113 1111 AAAG/OAAGAAAAAMAAD 1114 1111 AAAG/OAAGAAAAAMAAE 1111 1111 AAAG/OAAGAAAAAMAAF 1112 1111 AAAG/OAAGAAAAAMAAG 1113 1111 AAAG/OAAGAAAAAMAAH 1114 1111 已选择8行。 SQL> 查出重复记录 SQL> select rowid,c1,c2 2 from lunar 3 where lunar.rowid!=(select max(rowid) 4 from lunar b 5 where lunar.c1=b.c1 and lunar.c2=b.c2); ROWID C1 C2 ------------------ ---- -------------------- AAAG/OAAGAAAAAMAAA 1111 1111 AAAG/OAAGAAAAAMAAB 1112 1111 AAAG/OAAGAAAAAMAAC 1113 1111 AAAG/OAAGAAAAAMAAD 1114 1111 SQL> 删除重复记录: SQL> delete from lunar a 2 where a.rowid!=(select max(rowid) 3 from lunar b 4 where a.c1=b.c1 and a.c2=b.c2); 已删除4行。 SQL> commit; 提交完成。 SQL> select rowid,c1,c2 from lunar; ROWID C1 C2 ------------------ ---- -------------------- AAAG/OAAGAAAAAMAAE 1111 1111 AAAG/OAAGAAAAAMAAF 1112 1111 AAAG/OAAGAAAAAMAAG 1113 1111 AAAG/OAAGAAAAAMAAH 1114 1111 SQL>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: