首頁 >資料庫 >mysql教程 >如何使用 SQL 連線有效地找到每組的最大/最小值?

如何使用 SQL 連線有效地找到每組的最大/最小值?

DDD
DDD原創
2025-01-02 13:41:38487瀏覽

How to Efficiently Find Max/Min Values per Group Using SQL Joins?

使用聯結檢索每組的最大/最小值

在此解決方案中,我們使用聯接操作來檢索指定列中具有最高或最低值的行每個組,無需訴諸排名或子查詢。

找出每個組中OrderField 值最高的行組:

SELECT t1.*
FROM `Table` AS t1
LEFT OUTER JOIN `Table` AS t2
  ON t1.GroupId = t2.GroupId AND t1.OrderField < t2.OrderField
WHERE t2.GroupId IS NULL
ORDER BY t1.OrderField;

如果組內多個記錄共享相同的最大OrderField 值,您可能需要進一步細化條件:

SELECT t1.*
FROM `Table` AS t1
LEFT OUTER JOIN `Table` AS t2
  ON t1.GroupId = t2.GroupId 
        AND (t1.OrderField < t2.OrderField 
         OR (t1.OrderField = t2.OrderField AND t1.Id < t2.Id))
WHERE t2.GroupId IS NULL

此方法可確保當組內存在平局時,返回OrderField 值最大的行。

以上是如何使用 SQL 連線有效地找到每組的最大/最小值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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