使用 SQL 有效辨識每組中最年長的人
資料庫查詢通常需要尋找特定群組內的最大值。 此範例示範如何從具有 person
、group
和 age
列的表中找出每組中年齡最大的人。
解:
此方法利用 LEFT JOIN
來比較小組中每個人的年齡。 沒有匹配的行代表該組中最年長的人。
實作:
<code class="language-sql">SELECT o.* FROM Persons o LEFT JOIN Persons b ON o.Group = b.Group AND o.Age < b.Age WHERE b.Age IS NULL;</code>
說明:
Persons o
:Persons
表的別名為 o
(表示「最舊的」)。 LEFT JOIN Persons b
:使用別名為 LEFT JOIN
(代表「較大年齡」)的 Persons
表執行 b
。 這會將 o
中的每一行與同一組 (o.Group = b.Group
) 中年齡較大 (o.Age < b.Age
) 的行連接起來。 WHERE b.Age IS NULL
:這個關鍵子句過濾結果。 如果 o
中的某個人在 b
中沒有匹配項(意味著 b.Age
為 NULL),則表示其組中沒有人年齡較大。 因此,只選擇每組中年齡最大的人。 重要注意事項:
INNER JOIN
會錯誤地忽略只有一個成員的組別中最年長的人。 以上是如何使用 SQL 找出每個組中最年長的人?的詳細內容。更多資訊請關注PHP中文網其他相關文章!