簡體   English   中英

為MySQL中的每個組選擇第一行?

[英]Select the first row for each group in 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
...

我該怎么做?

在此處輸入圖片說明

您可以 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

可能是這樣的:

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

MySQL 允許您將列添加到select子句中,這些列不在group by子句中並且不使用聚合函數。

嘗試

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM