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)。哪种方法最简单?
感谢您的帮助!
答案 0 :(得分:2)
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;
答案 1 :(得分:2)
此表达式不按定义获取第一行:
SELECT id, field_1
FROM table
GROUP BY field_2
它为field2
的每个值从任意行获取值。任意行可能是第一行,但不能保证。查看隐藏列的documentation以了解这一点。
在MySQL中,您需要一个连接才能获得ID最高的行。这是一种方式:
select t.*
from t
where id = (select max(id) from t t2 where t2.field2 = t.field2)
这将获取field2的每个值具有最高id的所有行。