使用ROWID查詢和刪除重複行

2021-04-18 20:01:33 字數 1892 閱讀 4869

sql> create table lunar (

2c1 char(4),

3c2 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;

rowidc1c2

------------------ ---- --------------------

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

2from lunar

3where lunar.rowid!=(select max(rowid)

4from lunar b

5where lunar.c1=b.c1 and lunar.c2=b.c2);

rowidc1c2

------------------ ---- --------------------

aaag/oaagaaaaamaaa 1111 1111

aaag/oaagaaaaamaab 1112 1111

aaag/oaagaaaaamaac 1113 1111

aaag/oaagaaaaamaad 1114 1111

sql>

刪除重覆記錄:

sql> delete from lunar a

2where a.rowid!=(select max(rowid)

3from lunar b

4where a.c1=b.c1 and a.c2=b.c2);

已刪除4行。

sql> commit;

提交完成。

sql> select rowid,c1,c2 from lunar;

rowidc1c2

------------------ ---- --------------------

aaag/oaagaaaaamaae 1111 1111

aaag/oaagaaaaamaaf 1112 1111

aaag/oaagaaaaamaag 1113 1111

aaag/oaagaaaaamaah 1114 1111

sql>

使用ROWID查詢和刪除重複行

sql create table lunar 2c1 char 4 3c2 varchar2 20 4 5 表已建立。sql insert into lunar values 1111 1111 已建立1 行。sql insert into lunar values 1112 1111 已建立1 行...

oracle 使用rowid刪除重複資料

經常有這樣乙個業務場景,我們在同一張表中有重複的記錄,我們要刪除重複的記錄,這篇文章就是用來解決這個問題的,用的方法是我目前遇到的效率最高的方法 如果有更好的方法歡迎提供 這個方法會用到了rowid,下面簡單介紹一下rowid的定義 rowid 資料庫中行的全域性唯一位址 對於資料中的每一行,row...

使用UltraEdit刪除重複的行

開啟檔案後,選擇 file sort advanced sort options remove duplicates 就可以了。ultraedit刪除空行的7種方法。1 如果是unix格式,替換 n n為 n,或者替換 n?為空 2 如果是dos格式,特換 r n r n為 r n 3 一般文字替換...