id | field_1 | field_2
1 | a | 1
2 | b | 1
SELECT id, field_1 FROM table GROUP BY field_2
这将获得 id = 1 的行,我怎样才能获得具有最大 id 的行?(我想得到 field_1 = b)。实现这一目标的最简单方法是什么?
谢谢你的帮助!
根据定义,这个表达式没有得到第一行:
SELECT id, field_1
FROM table
GROUP BY field_2
它的作用是从任意行中获取field2
. 任意行可能是第一行,但不能保证。查看隐藏列的文档以了解这一点。
在 MySQL 中,您需要一个连接来获取具有最高 id 的行。这是一种方法:
select t.*
from t
where id = (select max(id) from t t2 where t2.field2 = t.field2)
这将为 field2 的每个值获取具有最高 id 的所有行。
SELECT t1.id, t1.field_1, t2.IdSum
FROM table t1
INNER JOIN
(
SELECT field_2, MAX(id) id, SUM(id) IdSum
FROM Table
GROUP BY field_2
) t2 on t1.id = t2.id
AND t1.field_2 = t2.field_2;