我读过以前的问题,但它们与我的不相似(example我没有唯一的标识符。)
说这是我的表格行:
id string x y z time_x
10318 'hello' 33700 5053 8 2015-07-03 12:39:49.61408
14071 'hello' 33700 5053 8 2015-07-03 12:39:49.61408
除了行的id之外,基本上所有内容都是相同的。 如何识别这些情况并删除冗余行?
注意:并非表中的所有行都是重复的。常规行应保持原样。
答案 0 :(得分:5)
假设表名是tbl
Delete from tbl where id not in (select min(id) from tbl group by string, x, y, z)
答案 1 :(得分:0)
此查询使用窗口函数来查找重复的行。它留下了最小id的行:
delete from foo_table where id in (
select dupid from (
SELECT lead(id) over (partition by string, x, y, z, time_x order by id) dupid
from foo_table
) A where dupid is not null
);