如何用SQL删除重复的行?

10 sql

我有一个包含一些行的表.每行都有一个日期字段.现在,它可能是日期的重复.我需要删除所有重复项,只存储最高的行id.如何使用SQL查询?

现在:

date      id
'07/07'   1
'07/07'   2
'07/07'   3
'07/05'   4
'07/05'   5
Run Code Online (Sandbox Code Playgroud)

我想要的是:

date      id
'07/07'   3
'07/05'   5
Run Code Online (Sandbox Code Playgroud)

Geo*_*lly 33

DELETE FROM table WHERE id NOT IN
    (SELECT MAX(id) FROM table GROUP BY date);
Run Code Online (Sandbox Code Playgroud)

  • 此查询对此答案也很有用:SELECT日期,COUNT(日期)AS NumOccurrences FROM表GROUP BY日期HAVING(COUNT(日期)> 1) (4认同)

DaG*_*aMs 6

我没有评论权,所以这是我的评论作为答案,以防任何人遇到同样的问题:

在SQLite3中,有一个名为"rowid"的隐式数字主键,因此相同的查询将如下所示:

DELETE FROM table WHERE rowid NOT IN
(SELECT MAX(rowid) FROM table GROUP BY date);
Run Code Online (Sandbox Code Playgroud)

这将适用于任何表,即使它不包含名为"id"的主键列.