oracle |删除重复记录

时间:2017-09-14 14:35:08

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

如何删除它们?

2 个答案:

答案 0 :(得分:1)

我建议更容易:

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

然后删除你的表,并重命名新表。

如果您确实要删除记录,请you can find a few examples of how here.

答案 1 :(得分: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
);