首頁  >  文章  >  資料庫  >  如何有效率地檢索MySQL分組資料的首條和尾條記錄?

如何有效率地檢索MySQL分組資料的首條和尾條記錄?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-08 20:26:02494瀏覽

How to Efficiently Retrieve First and Last Records of Grouped Data in MySQL?

在MySQL 中使用聚合函數檢索分組資料的第一條和最後一筆記錄

在MySQL 中,當使用聚合函數從分組記錄中取得資料時,檢索該組的第一個和最後一個記錄可能具有挑戰性。儘管多個查詢可以完成此任務,但對於大型表來說效率可能較低。

為了最佳化這個過程,MySQL 使用GROUP_CONCATSUBSTRING_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

工作原理:

  • GROUP_CONCAT 將所有開啟或關閉值連接到單一字串中,按日期時間列排序。
  • SUBSTRING_INDEX 透過在逗號 (',') 處拆分連接字串來提取連接字串中的第一個和最後一個值。 '1' 參數表示第一次或最後一次出現。

範例:

考慮以下查詢:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn