2018年9月6日 星期四

Oracle x 刪除 x 大量重複資料


參考資料 : 掃文資訊

做了第一次後沒將SQL存起來,想說下次用就會了,結果還是忘記,這次記在這裡下次就可以來這裡看


--1.先找到重複資料的rowid,並找出rowid最大或最小值,作為刪除的條件
select min(rowid) from yourTable group by TableColumn having count(TableColumn) > 1;

--2.根據TableColumn找出數量大於1的重複資料
select TableColumn from yourTable group by TableColumn having count(TableColumn) > 1;

--3.根據上兩個條件進行執行刪除操作
delete from yourTable t where t.TableColumn in (
select TableColumn from yourTable group by TableColumn having count(TableColumn) > 1
)
and rowid not in (
select min(rowid) from yourTable group by TableColumn having count(TableColumn) > 1
);

--第一點的min(rowid)可以改成max(rowid),差別在於min會找出最早建立的資料(舊資料);max會找出最晚建立的資料(新資料)

沒有留言:

張貼留言