首页 > 解决方案 > 删除除具有最大日期的行之外的所有行

问题描述

如果我的架构是一个带有 id、uid 和日期的表,比如..

id uid date

1 10 2019-01-01 10:50:40

2 10 2019-01-02 09:20:20

3 11 2019-01-04 11:00:00

4 11 2019-01-04 08:30:30

查询看起来像SELECT id, max(date) FROM table GROUP BY id;

我返回 2 列,所以Operand should contain 1 column(s)按预期出现错误。

如何返回单列,然后删除所有其他行,如DELETE FROM table WHERE id NOT IN (SELECT id, max(date) FROM table GROUP BY id).

谢谢

编辑:

我以为我可以DELETE from table where id not in (SELECT id from (SELECT id, max(date) from table) a)????

标签: mysql

解决方案


你可以使用subquerywithNOT IN语句

delete from tableA where id not in 
(select t.id
    from (select id, max(date) maxd from tableA group by id)t)

推荐阅读