首页 > 数据库 > mysql教程 > 标准 SQL 中 HAVING 子句可以在没有 GROUP BY 子句的情况下存在吗?

标准 SQL 中 HAVING 子句可以在没有 GROUP BY 子句的情况下存在吗?

Barbara Streisand
发布: 2025-01-05 09:25:40
原创
211 人浏览过

Can a HAVING Clause Exist Without a GROUP BY Clause in Standard SQL?

不带 GROUP BY 的 HAVING:标准 SQL 合规性

标准 SQL 中是否可以存在没有 GROUP BY 子句的 HAVING 子句?根据标准,使用HAVING子句时需要GROUP BY子句。标准规定 HAVING 子句中引用的每一列必须在功能上依赖于 GROUP BY 子句中的列或外部引用。

但是,MySQL 允许不带 GROUP BY 子句的 HAVING 子句,并且它在特定条件下按预期运行:当第一行具有指定列的最大值时。

为了符合标准,应修改查询以包含GROUP BY 子句。例如,如果我们要检索具有最大页数的行,则更正后的查询将为:

SELECT *
FROM Book
GROUP BY BookID
HAVING NumberOfPages = MAX(NumberOfPages)
登录后复制

此查询将按 BookID 对行进行分组,并将 HAVING 条件应用于每个组,返回仅包含每组中页数最多的行。

以上是标准 SQL 中 HAVING 子句可以在没有 GROUP BY 子句的情况下存在吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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