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