首頁 > 資料庫 > mysql教程 > 如何在 MySQL 中選擇 Group-Wise 最大值?

如何在 MySQL 中選擇 Group-Wise 最大值?

Susan Sarandon
發布: 2024-11-22 09:56:11
原創
1020 人瀏覽過

How to Select the Group-Wise Maximum in MySQL?

在 MySQL 中選擇分組最大值

在關聯式資料庫中,有時您需要擷取每個群組的特定欄位的最大值的行。這稱為選擇分組最大值。在 MySQL 中,有多種方法可以實現此目的。

子查詢方法

一個有效的方法是使用子查詢:

SELECT *
FROM (
  SELECT id, MAX(version_id) AS version_id
  FROM table
  GROUP BY id
) AS t1
INNER JOIN table AS t2
  ON t2.id = t1.id AND t1.version_id = t2.version_id;
登入後複製

此子查詢建立一個表每個ID 的最大版本ID,然後將其與原始表連接以檢索相應的行。它相對高效,並且假設 (id, version_id) 列上存在索引。

聚合和排名方法

或者,您可以使用聚合和排名函數:

SELECT id,
       version_id,
       field1,
       field2
FROM (
  SELECT id,
          version_id,
          field1,
          field2,
          RANK() OVER (PARTITION BY id ORDER BY version_id DESC) AS ranking
  FROM table
) AS ranked_table
WHERE ranking = 1;
登入後複製

此查詢按照version_id 的降序對每個ID 的行進行排名,並選擇排名為 1的行,從而有效地過濾最大值

視窗函數

視窗函數也可用於此目的:

SELECT id,
       version_id,
       field1,
       field2
FROM (
  SELECT id,
          version_id,
          field1,
          field2,
          MAX(version_id) OVER (PARTITION BY id) AS max_version_id
  FROM table
) AS windowed_table
WHERE version_id = max_version_id;
登入後複製

此查詢使用MAX() 計算每個ID的最大版本ID over() 視窗函數並選擇具有匹配版本ID 的行。

以上是如何在 MySQL 中選擇 Group-Wise 最大值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板