首頁 > 資料庫 > mysql教程 > 如何在 MySQL 中尋找具有最大列值並被另一列分區的行?

如何在 MySQL 中尋找具有最大列值並被另一列分區的行?

Susan Sarandon
發布: 2025-01-25 06:46:08
原創
430 人瀏覽過

How to Find Rows with Maximum Column Values, Partitioned by Another Column in MySQL?

MySQL以另一列分組找出具有最大列值的行

在資料庫中,以另一列分組找出具有最大值的行是一項常見的分析任務。在MySQL中,這可以透過組合聚合和過濾來實現。

本文探討了從表中檢索行的問題,這些行包含由另一列定義的每個組中特定列的最大值。例如,在提供的「TopTen」表中,任務是為每個唯一的「home」值提取行,以及對應的「datetime」列的最大值。

最初嘗試的查詢如下,但有缺陷:

<code class="language-sql">SELECT
  s1.id,
  s1.home,
  s1.datetime,
  s1.player,
  s1.resource
FROM TopTen s1
JOIN (SELECT
  id,
  MAX(`datetime`) AS dt
FROM TopTen
GROUP BY id) AS s2
  ON s1.id = s2.id
ORDER BY `datetime`</code>
登入後複製

該查詢未能正確辨識每個「home」的最大「datetime」值。 為了正確解決問題,需要在子查詢中同時對「home」和「datetime」進行分組:

<code class="language-sql">SELECT tt.*
FROM topten tt
INNER JOIN
    (SELECT home, MAX(datetime) AS MaxDateTime
    FROM topten
    GROUP BY home) groupedtt 
ON tt.home = groupedtt.home 
AND tt.datetime = groupedtt.MaxDateTime</code>
登入後複製

此最終查詢成功地識別了每個不同「home」值的行,這些行包含其「datetime」列的最大值,從而得到預期的結果:

id home datetime player resource
1 10 04/03/2009 john 399
2 11 04/03/2009 juliet 244
5 12 04/03/2009 borat 555
8 13 01/01/2009 borat 700

以上是如何在 MySQL 中尋找具有最大列值並被另一列分區的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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