首页 > 解决方案 > 删除重复行

问题描述

我正在学习SQLite并构建了一条我认为会删除重复但它会删除所有行的行。

DELETE from tablename WHERE rowid not in (SELECT distinct(timestamp) from tablename);

我希望这会删除重复的行(留下一个)。我知道我可以简单地创建一个具有不同行的新表,但为什么我没有做的工作?谢谢

标签: sqlite

解决方案


对于最新版本的 sqlite,以下是一种替代方法:

DELETE FROM tablename
WHERE rowid IN (SELECT rowid
                FROM (SELECT rowid, row_number() OVER (PARTITION BY timestamp) AS rownum
                      FROM tablename)
                WHERE rownum >= 2);

推荐阅读