分组sql时选择行

时间:2013-01-15 14:15:20

标签: mysql sql

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)。哪种方法最简单?

感谢您的帮助!

2 个答案:

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