2017-07-20 94 views
1

我有一个奇怪的表格调用mytable,没有列是主要的。SQLite如何删除除一个之外的所有重复行?

Name | Company | Position 
Michael  Google  Tester 
Michael  Google  Tester 
Michael  Google  Tester 
Peter  Facebook Developer 
Peter  Facebook Developer 
Peter  Facebook Developer 
Peter  Facebook Developer 

我想

Name | Company | Position 
Michael  Google  Tester 
Peter  Facebook Developer 

有了一些解决方案,我发现这里的同一个问题是什么,他们没有工作。 例如: DELETE FROM mytable WHERE Name NOT IN (SELECT MAX(Name) FROM mytable GROUP BY Company);

我应该在此表中编辑权限,使用SQLite,不创建新表和创建CTE。我该怎么做?

回答

4

您可以选择保留minmaxrowid分组由3列显示的女人。

delete from myTable 
where rowid not in (select min(rowid) 
        from myTable 
        group by name,company,position) 
+0

非常感谢你。你解决了它! :) – gnase

1
SELECT DISTINCT Name, Company, Position 
FROM yourTableName 

如果要删除“重复”你可能会这样写行:

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

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

DELETE FROM yourTableName 
WHERE yourColumn NOT IN (
    SELECT yourColumn 
    FROM yourTableName 
    WHERE yourColumn IS NOT NULL 
) 
+0

谢谢。有了这个命令,我只能选择。我想要做的是改变这张桌子也 – gnase

+0

@gnase你想删除或什么? –

+0

是的,这正是我想要的。:) – gnase

0

希望这解决方案适用于您:

ALTER TABLE忽略ADD mytable UNIQUE INDEX(NameCompanyPosition);

相关问题