首頁 > 資料庫 > mysql教程 > 如何僅使用SQL中的列中使用最大值選擇行?

如何僅使用SQL中的列中使用最大值選擇行?

Linda Hamilton
發布: 2025-01-25 20:57:11
原創
217 人瀏覽過

How to Select Only Rows with the Maximum Value in a Column Using SQL?

SQL選擇列中最大值的行:完整指南

問題描述:

考慮以下包含文件資訊的表格:

id rev content
1 1 ...
2 1 ...
1 2 ...
1 3 ...

目標是為每個id檢索一行,僅包含具有最大修訂號(rev)的文件。給定資料的期望輸出為:

id rev content
1 3 ...
2 1 ...

此問題通常出現在SQL中,提示使用者尋找給定群組識別碼的欄位中具有最大值的數 據行。

解法一:使用子查詢連接

第一種方法涉及建立子查詢,該子查詢標識群組標識符 (id) 和 rev 列中的最大值。可以使用群組標識符和最大值上的相等條件將此子查詢與主表連接。

<code class="language-sql">SELECT a.id, a.rev, a.contents
FROM YourTable a
INNER JOIN (
    SELECT id, MAX(rev) rev
    FROM YourTable
    GROUP BY id
) b ON a.id = b.id AND a.rev = b.rev</code>
登入後複製

解法二:自身左連結

第二種方法利用左連接操作將表格與其自身關聯。在群組標識符 (id) 上指定相等條件。為確保僅選擇具有最大 rev 值的行,請新增一個條件來檢查右側 rev 值是否小於左側 rev 值。最後,套用過濾器以僅顯示右側 rev 值為 NULL 的行(指示存在最大 rev 值)。

<code class="language-sql">SELECT a.*
FROM YourTable a
LEFT OUTER JOIN YourTable b
    ON a.id = b.id AND a.rev < b.rev
WHERE b.id IS NULL;</code>
登入後複製

結論:

兩種解決方案都產生相同的結果,並且與SQL ANSI相容。最合適的選擇取決於個人喜好和特定的資料庫效能特徵。建議進行基準測試以確定不同場景下的最佳方法。

以上是如何僅使用SQL中的列中使用最大值選擇行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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