选择MySQL中每个组的第一行?

时间:2016-10-01 04:41:34

标签: mysql

我有一张约有700条记录的小桌子。我想选择每组的第一条记录。

查询如下

SELECT *
FROM release_image ri
ORDER BY ri.release_id, ri.position DESC

和结果集,如下图所示。如您所见,我想选择每个组的第一个,它应该是:

release_id  image_id   position
------------------------------------
1           1809      3
2           1010      1
3           2240      2
4           2245      2
...

我该怎么做?

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以GROUP BY并选择MAX位置。

SELECT ri.*
FROM (
    SELECT ri.release_id, MAX(ri.position) AS position
    FROM release_image ri
    GROUP BY ri.release_id
) ri_max
INNER JOIN release_image ri ON ri_max.release_id = ri.release_id AND ri_max.position = ri.position

答案 1 :(得分:0)

尝试

SELECT *
FROM release_image ri
GROUP BY ri.release_id, ri.position DESC;

答案 2 :(得分:0)

可能是这样的:

SELECT release_id, image_id, MAX(position) FROM release_image ri group by release_id

MySQL允许您向select子句添加列,这些列不在group by子句中,并且不使用聚合函数。

相关问题