1. 程式人生 > >oracle 刪除重複資料 保留rowid 最小的行

oracle 刪除重複資料 保留rowid 最小的行

舉個例子:

    這要刪除 id 重複的行,只保留最小的 sql 語句就是:

delete from table_name t1 where rowid not in(
       select min(rowid) from table_name t2
       where t2.id is not null
       having count(id) >1 group by t2.id
)

或者是這樣子: 

delete from table_name t1 where rowid >(
       select min(t2.rowid) from table_name  t2
       where t1.id=t2.id
       )

 二者選一拿去用吧.

大致邏輯就是:

子查詢篩選出  最小 ,沒有重複的 rowid

跟原表比較,刪除重複的