我有这张桌子:
LINE CONTENT
245 Route selection data
365 To be continued...
367 --- END
373 Route selection data
424 --- END
454 --- END
462 PRA subscriber configuration
491 --- END
545 --- END
我需要删除内容与前一行具有相同值的行,但我不必删除具有相同值的所有行。 我需要保留CONTENT值与前一行不同的行。 换句话说,我需要一个这样的表:
LINE CONTENT
245 Route selection data
365 To be continued...
367 --- END
373 Route selection data
424 --- END
462 PRA subscriber configuration
491 --- END
我无法根据列线的值删除,因为此列的值每天都会更改。我必须根据列内容的值删除记录。
答案 0 :(得分:4)
一种简单的方法是使用带LAG
的嵌套查询来查找重复的行,并在外部查询中删除它们;
DELETE FROM mytable WHERE line IN (
SELECT CASE WHEN content = LAG(content) OVER (ORDER BY line) THEN line END r
FROM mytable
);
答案 1 :(得分:0)
这是另一种方法,假设line
是唯一的:
delete from thistable
where line not in (select min(line) from thistable group by content);