首页 > 解决方案 > 在db中查找重复的列多个值

问题描述

我有一个带有以下列的 sqlite 数据库:

id   home   path    name    layer
1   /home   test    user1   1
2   /etc    test2   user2   1
3   /home   test    user3   1
4   /home   test    user4   1
5   /home   test    user1   1
6   /etc    test2   user2   1

如何删除所有重复项,如果homepath并且name相等,但前提是所有 3 个都相同?

Sl id 1 应该被删除,因为它是 id 5 的副本,而 id 2 是因为它是 id 6 的副本而被删除。

它应该是这样的:

id   home   path    name    layer
3   /home   test    user3   1
4   /home   test    user4   1
5   /home   test    user1   1
6   /etc    test2   user2   1

标签: sqlitesql-delete

解决方案


您可以通过以下方式实现group by

select
  *
from data

group by "home", "path", "name"
having max("id")

order by "id"

sqlfiddle


推荐阅读