sqlite 如何删除除一行之外的重复行?

u0njafvf  于 2023-01-09  发布在  SQLite
关注(0)|答案(3)|浏览(139)

mytable上,没有列是主列:
| 姓名|公司|职位|
| - ------|- ------|- ------|
| 迈克尔|谷歌|试验员|
| 迈克尔|谷歌|试验员|
| 迈克尔|谷歌|试验员|
| 彼得|脸书|显影剂|
| 彼得|脸书|显影剂|
| 彼得|脸书|显影剂|
| 彼得|脸书|显影剂|
我想要的:
| 姓名|公司|职位|
| - ------|- ------|- ------|
| 迈克尔|谷歌|试验员|
| 彼得|脸书|显影剂|
这是行不通的:

DELETE FROM
   mytable
WHERE
   Name NOT IN (
      SELECT
         MAX(Name)
      FROM
         mytable
      GROUP BY
         Company
   )
;

如果不创建新表,也没有CTE,如何删除重复行,只留下一行?

7gcisfzg

7gcisfzg1#

您可以选择保留minrowid分组的max,按所示的3列分组。

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

f1tvaqid2#

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
)
7y4bm7vi

7y4bm7vi3#

希望此解决方案对您有用:

ALTER IGNORE TABLE `mytable` ADD UNIQUE INDEX (`Name`, `Company`, `Position`);

相关问题