SQLite如何删除除一个之外的所有重复行?

gna*_*ase 4 sql sqlite

我有一个奇怪的表调用mytable,没有列是主要的.

  Name    |  Company  |  Position
 Michael     Google      Tester
 Michael     Google      Tester
 Michael     Google      Tester
 Peter       Facebook    Developer
 Peter       Facebook    Developer
 Peter       Facebook    Developer
 Peter       Facebook    Developer
Run Code Online (Sandbox Code Playgroud)

我想要的是

  Name    |  Company  |  Position
 Michael     Google      Tester
 Peter       Facebook    Developer 
Run Code Online (Sandbox Code Playgroud)

通过一些解决方案,我在这里找到了同样的问题,但它们没有用.例如: DELETE FROM mytable WHERE Name NOT IN (SELECT MAX(Name) FROM mytable GROUP BY Company);

我应该在这个表中编辑,使用SQLite,没有新表创建,也没有CTE.我该怎么做?

Vam*_*ala 7

您可以选择保留minmaxrowid通过所示的3列编组.

delete from myTable
where rowid not in (select min(rowid)
                    from myTable
                    group by name,company,position)
Run Code Online (Sandbox Code Playgroud)


Rox*_*Pro 5

SELECT DISTINCT  Name,  Company,  Position 
FROM yourTableName
Run Code Online (Sandbox Code Playgroud)

如果你想删除“重复”行,你可以这样写:

yourTableName - 应该是你真正的数据库表

yourColumn - 应该是您真正的数据库列

DELETE FROM yourTableName
WHERE yourColumn NOT IN (
    SELECT yourColumn 
    FROM yourTableName
    WHERE yourColumn IS NOT NULL
)
Run Code Online (Sandbox Code Playgroud)