SQL:選擇列中具有最大值的行
考慮一個簡化的文檔表,其中包含列 id、rev 和 content。要過濾表並檢索包含每個 id 的最大 rev 值的行,您可以使用 SQL 函數 MAX() 和 GROUP BY。
使用 GROUP BY 提取最大值
<code class="language-sql">SELECT id, MAX(rev) FROM YourTable GROUP BY id;</code>
但是,為了獲得包含每個 id 的最大 rev 值的整行數據,您可以採用兩種方法:
方法 1:與最大值子查詢連接
<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>
方法 2:使用自身條件進行左連接
<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>
兩種方法都利用左連接和過濾條件來僅檢索每個 id 的最大 rev 值的行。第二種方法將表自身與自身左連接,使用一個連接條件來排除具有最大 rev 值的重複行。
性能注意事項
這些方法的性能可能會因數據庫類型、表大小和索引利用率等因素而異。建議對這兩種方法進行基準測試,以確定適合您特定場景的最佳解決方案。
以上是如何只選擇 SQL 列中具有最大值的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!