我有一张约有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
...
我该怎么做?
答案 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
子句中,并且不使用聚合函数。