我在我的桌子上找到了一些副本:
-- 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: ----
怎么可能把它们删除呢?
发布于 2017-09-15 06:00:07
即使您没有主键,每个记录都有一个唯一的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
);
发布于 2017-09-14 14:42:15
我建议一些更简单的方法:
CREATE table NewTable as
SELECT DISTINCT pplp_name,start_time,end_time
FROM YourTable
然后删除您的表,并重命名新表。
如果您真的想删除记录,you can find a few examples of how here.
https://stackoverflow.com/questions/46221866
复制相似问题