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

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

驗證過程: code

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

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

對應結果: im

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


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

進行反向驗證: 項目

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

SELECT 
  * 
FROM
  proj_milestone 
WHERE projId = '000' 
  AND STATUS = 0 
ORDER BY validTime ASC

結果: 時間

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

若是validTime,projId,都相同,即知足條件的里程碑記錄有多條

分組結果會自動按照id升序獲取第一條,以下:

相關文章
相關標籤/搜索