mySQL group by 默認取分組結果的第一條記錄

下個SQL 的主要目的是獲取每個項目的最近的一個里程碑記錄

SELECT
milestone.id ,milestone.projId,milestone.validTime
FROM
(SELECT
*
FROM
proj_milestone
WHERE STATUS =0
ORDER BY validTime ASC) AS milestone
GROUP BY milestone.projId
對應結果:
結果

要想獲取最近的里程碑,預計完成時間validTime採取升序,升序按照group by 進行分組,既可獲得每個項目的最近的一個里程碑記錄

其中: 如何保證group by 獲取的就是這個項目下所有里程碑的第一條呢

進行反向驗證:

1 獲取這個項目的所有里程碑記錄並按照validTime升序排列

SELECT
*
FROM
proj_milestone
WHERE projId = ‘000’
AND STATUS = 0
ORDER BY validTime ASC
結果:
在這裏插入圖片描述

證明group by 拿到的是分組結果的第一條數據與id大小無關

如果validTime,projId,都相同,即滿足條件的里程碑記錄有多條
在這裏插入圖片描述

分組結果會自動按照id升序獲取第一條,如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章