創(chuàng)新互聯(lián)主營(yíng)三河網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,
成都app軟件開(kāi)發(fā),三河h5微信小程序搭建,三河網(wǎng)站營(yíng)銷(xiāo)推廣歡迎三河等地區(qū)企業(yè)咨詢(xún)/>
如何刪除oracle庫(kù)中相同的記錄,但是保留重復(fù)記錄中的一條記錄:
解決方法:可以利用oracle中的rowid偽列來(lái)達(dá)到這個(gè)目的:
1.建立臨時(shí)表,并將查詢(xún)到的重復(fù)數(shù)據(jù)插入其中(是否可以建一個(gè)視圖?):
create table temp_woods as
(select item_id,count(*) as rowcount from wooods group by item_id having count(*) > 1 );
2.查詢(xún)相同的紀(jì)錄:
select a.*,a.rowid from woods a where a.rowid <> (select max(b.rowid) from woods b where b.item_id in (select item_id from temp_woods) where b.item_id = a.item_id) ;
3.刪除重復(fù)的記錄并保留其中rowid列大的紀(jì)錄:
delete from woods a where a.rowid <> (select max(b.rowid) from woods b where b.item_id in (select item_id from temp_woods) where b.item_id = a.item_id) ;
4.刪除臨時(shí)表:
drop table temp_woods cascade constraints ;
文章題目:如何刪除oracle庫(kù)中相同的記錄-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:
http://weahome.cn/article/cddogd.html