oracle中刪除兩條相同記錄中的一條該怎麼操作

時間 2021-08-30 15:06:47

1樓:匿名使用者

1.不含大欄位(clob等)的**:

--例子**:create table test(a number,b number);

--方法一:通過group by + rowid,效率低

delete from test t

where t.rowid not in (select min(rowid) from test group by a, b);

--方法二:通過 create + rename + distinct ,效率高

create table test_tmp as

select distinct * from test t;

drop table test;

alter table test_tmp rename to test;

2.含大欄位(clob等)的**:

--例子**:create table test(a number,b clob);

--clob 長度小於4000:

select distinct t.a,to_char(t.b) as b from test t;

--clob 長度大於4000:

select *

from test a

where a.rowid = (select max(b.rowid)

from test b

where b.a = a.a

and nvl(dbms_lob.compare(b.b, a.b), 0) = 0);

2樓:

delete from dept where rowid not in

(select min(rowid) from dept group by deptno , dname ,loc)

這樣可以保證所有的重複資料僅保留一條,其餘的刪除

3樓:

oracle中有一個偽列,rownum,用來標識行,可以用這個來試試

4樓:匿名使用者

delete from dept where rownum not in (select max(rownum) from dept group by deptno,dname,loc)

5樓:o期待

用pl-sql解決方法

select * from 表名 for update;

然後點然後再點要刪除的行,在點ok!

6樓:匿名使用者

不能用delete刪除,要單獨刪吧。

sql查詢中怎麼將兩條內容相同的記錄顯示成一條

sql查詢中兩條內容相同的記錄顯示成一條可以用group by語句或distinct語句來實現。如,test表中有如下資料 group by的方法 select id,name from test group by id,name 查詢結果 distinct的方法 select distinct i...

如何刪除資料庫中相同的記錄其中的一條,但要保留一條資料

建議這樣做,比較簡單,給表加一個id欄位,預設自增,這樣不會影響表的其他結構,然後寫這樣的sql delete from demo where id in select id from demo where id select top 1 id from demo where name name a...

CAD中這兩條豎槓代表什麼,CAD中兩條線附近標一橫一豎什麼意思 4 是什麼意思 如圖

帶筆了嗎 o 可以代表好多東西 先學習機械製圖在看cad吧 文苑小荷 如果是蘭顏色的應該是牆上的預埋孔,比如空調銅管或換氣扇的出牆孔 cad中兩條線附近標一橫一豎什麼意思 4 是什麼意思 如圖 全部是幾何關係 一橫一豎各自代表水平對齊和豎直對齊,4代表上面的兩條斜線是相等的 cad中這個標誌是什麼意...