[英]oracle | delete duplicates records
我在表中發現了一些重復項:
-- DUPLICATES: ----
select PPLP_NAME,
START_TIME,
END_TIME,
count(*)
from PPLP_LOAD_GENSTAT
group by PPLP_NAME,
START_TIME,
END_TIME
having count(*) > 1
-- DUPLICATES: ----
如何刪除它們?
我建議一些簡單的事情:
CREATE table NewTable as
SELECT DISTINCT pplp_name,start_time,end_time
FROM YourTable
然后刪除表,然后重命名新表。
如果您確實要刪除記錄, 可以在此處找到一些示例。
即使您沒有主鍵,每個記錄也會有一個唯一的關聯的rowid。
通過使用下面的查詢,您可以通過將表與導致重復的列進行自我連接來僅刪除沒有最大行ID的記錄。 這將確保您刪除所有重復項。
DELETE FROM PPLP_LOAD_GENSTAT plg_outer
WHERE ROWID NOT IN(
select MAX(ROWID)
from PPLP_LOAD_GENSTAT plg_inner
WHERE plg_outer.pplp_name = plg_inner.pplg_name
AND plg_outer.start_time= plg_inner.start_time
AND plg_outer.end_time = plg_inner.end_time
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.