首页 > 数据库 > mysql教程 > 如何使用 SQL 连接有效地查找每组的最大/最小值?

如何使用 SQL 连接有效地查找每组的最大/最小值?

DDD
发布: 2025-01-02 13:41:38
原创
495 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板