在MySQL 中使用聚合函數檢索分組資料的第一條和最後一筆記錄
在MySQL 中,當使用聚合函數從分組記錄中取得資料時,檢索該組的第一個和最後一個記錄可能具有挑戰性。儘管多個查詢可以完成此任務,但對於大型表來說效率可能較低。
為了最佳化這個過程,MySQL 使用GROUP_CONCAT 和SUBSTRING_INDEX 函數提供了更有效率的解決方案.
使用
一起使用這些函數,您可以連接群組中的值,然後使用SUBSTRING_INDEX 提取第一個和最後一個值。操作方法如下:
SUBSTRING_INDEX(GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1) AS open SUBSTRING_INDEX(GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1) AS close
工作原理:
範例:
考慮以下查詢:
SELECT MIN(low_price), MAX(high_price), SUBSTRING_INDEX(GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1) AS open, SUBSTRING_INDEX(GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1) AS close FROM symbols WHERE date BETWEEN(.. ..) GROUP BY YEARWEEK(date)
This查詢有效地擷取每個群組的第一條(開啟)和最後一筆(關閉)記錄,從而最大限度地減少大型表的處理時間。
以上是如何有效率地檢索MySQL分組資料的首條和尾條記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!