在此解决方案中,我们使用联接操作来检索指定列中具有最高或最低值的行每个组,无需诉诸排名或子查询。
查找每个组中 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中文网其他相关文章!