首页 > 解决方案 > 在 MySQL 中对行进行分组并选择最高 ID

问题描述

我在下面有这张表:

 +----+--------+------------+-----------+-------+
 | id | UserID | LoginDate  | LoginTime | Login |
 +----+--------+------------+-----------+-------+
 | 31 |     21 | 10/28/2020 | 9:32:36   |     1 |
 | 32 |     21 | 10/28/2020 | 10:38:30  |     1 |
 | 34 |      2 | 10/28/2020 | 11:09:48  |     1 |
 | 36 |      2 | 10/28/2020 | 11:10:09  |     1 |
 +----+--------+------------+-----------+-------+

我想按 UserID 分组并仅返回具有最高 id 值的行,预期输出:

 +----+--------+------------+-----------+-------+
 | id | UserID | LoginDate  | LoginTime | Login |
 +----+--------+------------+-----------+-------+
 | 32 |     21 | 10/28/2020 | 10:38:30  |     1 |
 | 36 |      2 | 10/28/2020 | 11:10:09  |     1 |
 +----+--------+------------+-----------+-------+

这是我的 MySQL 代码:

 SELECT * FROM (SELECT * FROM tbltrackerlogins ORDER BY id DESC) AS ttl GROUP BY UserID

我假设内部选择查询已经对结果进行了排序,id因此当它被分组时,它将显示具有最高 ID 的查询。但是输出仍然是这样的:

 +----+--------+------------+-----------+-------+
 | id | UserID | LoginDate  | LoginTime | Login |
 +----+--------+------------+-----------+-------+
 | 31 |     21 | 10/28/2020 | 9:32:36   |     1 |
 | 34 |      2 | 10/28/2020 | 11:09:48  |     1 |
 +----+--------+------------+-----------+-------+

标签: mysqlsqlgroup-bysql-order-by

解决方案


推荐阅读