在此解決方案中,我們使用聯接操作來檢索指定列中具有最高或最低值的行每個組,無需訴諸排名或子查詢。
找出每個組中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中文網其他相關文章!