oracle |删除重复记录
问题描述:
我已经发现了一些重复的在我的表: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: ----
怎么可能删除它们?
答
即使你没有主键,每个记录相关联的唯一的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
);
答
我建议一些轻松:
CREATE table NewTable as
SELECT DISTINCT pplp_name,start_time,end_time
FROM YourTable
然后删除表,并重新命名新表。
如果你真的要删除的记录,you can find a few examples of how here.
请帮助我如何删除,我找不到方法! –