簡體   English   中英

甲骨文| 刪除重復記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM