2017-09-14 289 views
0

我已經發現了一些重複的在我的表:oracle |刪除重複記錄

-- 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: ---- 

怎麼可能刪除它們?

回答

1

即使你沒有主鍵,每個記錄相關聯的唯一的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 
); 
1

我建議一些輕鬆:

CREATE table NewTable as 
SELECT DISTINCT pplp_name,start_time,end_time 
FROM YourTable 

然後刪除表,並重新命名新表。

如果你真的要刪除的記錄,you can find a few examples of how here.

+0

請幫助我如何刪除,我找不到方法! –