识别SQLite3数据库中的重复行并删除它们

时间:2018-01-06 23:43:15

标签: sqlite duplicates

我的表listed_users有两个TEXT列,codeusername

code | username
-----|---------
aa   | john_doe
ab   | jane_doe
ca   | john_doe
ca   | john_doe <-- duplicate
da   | ryan_doe

我想编写一个删除重复项的命令,例如ca | john_doe,其中相同的信息出现在多行的两列中。

1 个答案:

答案 0 :(得分:3)

要删除一对重复行中的一行,您必须具有一些识别它的机制。在SQLite中,这将是rowid

以下查询返回您要保留的所有行的rowid值,即每个唯一代码/名称组合的一行:

SELECT min(rowid)
FROM listed_users
GROUP BY code, username;

您要删除不在该列表中的所有行:

DELETE FROM listed_users
WHERE rowid NOT IN (SELECT min(rowid)
                    FROM listed_users
                    GROUP BY code, username);