首頁 >資料庫 >mysql教程 >如何在SQL中找到每個組中最年長的人?

如何在SQL中找到每個組中最年長的人?

DDD
DDD原創
2025-01-23 22:52:10639瀏覽

How to Find the Oldest Person in Each Group in SQL?

高效能檢索分組 SQL 資料中排名靠前的記錄

此範例示範如何識別 SQL 表中每個群組中最年長的人,並考慮按字母順序來解決關係。 表結構包括「人員」、「組」和「年齡」欄位:

範例表:

Person Group Age
Bob 1 32
Jill 1 34
Shawn 1 42
Jake 2 29
Paul 2 36
Laura 2 39

目標:找出每組中年紀最大的人,如果年齡相同,則按字母順序優先。

SQL 解:

<code class="language-sql">SELECT o.*
FROM Persons o
LEFT JOIN Persons b ON o.Group = b.Group AND (o.Age < b.Age OR (o.Age = b.Age AND o.Person > b.Person))
WHERE b.Person IS NULL;</code>

說明:

此查詢使用 LEFT JOIN 將每個人 (o) 與同一組中的所有其他人 (b) 進行比較。 ON 子句篩選符合下列任一條件的行:

  1. o.Age < b.Ageob 年輕(意味著 o 不是最老的)。
  2. o.Age = b.Age AND o.Person > b.Personob 年齡相同,但按字母順序排列較晚(意味著 o 不是按字母順序最古老的)。

WHERE b.Person IS NULL 子句過濾掉 o 中與 b 匹配的所有行,只留下每組中最年長的人(如果有平局,則按字母順序排在前面)。

進一步探討:

要更全面地了解進階 SQL 技術和潛在陷阱,請參閱「SQL 反模式磁碟區 1:避免資料庫程式設計的陷阱」等資源。

以上是如何在SQL中找到每個組中最年長的人?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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