MySQL 多表分組後獲取每一組的時間最大的那條記錄

、唐城發表於2020-10-26
  • 一、問題

         GROUP BY分組後取最新時間的一條記錄的SQL的解決方案。

  • 二、解決方案
  • 首先對資源表資料進行排序(多表)
SELECT 
		a1.*,
        a2.a2id
FROM 
		table1 a1 
LEFT JOIN table2 a2
ON a1.a1id = a2.a2id 
WHERE a1.time 
ORDER BY a1.time desc
  • 然後組合以上SQL生成的臨時表進行巢狀查詢(多表)
SELECT 
	w.*
FROM 
(
    SELECT 
		a1.*,
        a2.a2id
    FROM 
		table1 a1 
    LEFT JOIN table2 a2
    ON a1.a1id = a2.a2id 
    WHERE a1.a1time 
    ORDER BY a1.a1time desc
) w
GROUP BY w.a1id

另外在查詢時,有一篇文章內在臨時表查詢時加入了having 1作為條件,經測試,取消後得到的結果是相同的,各位可以在使用時自定義測試

SELECT 
	w.*
FROM 
(
    SELECT 
		a1.*,
        a2.a2id
    FROM 
		table1 a1 
    LEFT JOIN table2 a2
    ON a1.a1id = a2.a2id 
    WHERE a1.a1time 
    HAVING 1
    ORDER BY a1.a1time desc
) w
GROUP BY w.a1id

臨時表內的a2.id可替換為a2.*作為臨時表w的多資料條件

相關文章