1
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)。实现这一目标的最简单方法是什么?

谢谢你的帮助!

4

2 回答 2

2

根据定义,这个表达式没有得到第一行:

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 的所有行。

于 2013-01-15T14:28:44.523 回答
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;
于 2013-01-15T14:17:05.157 回答