MySQL 错误 : Non-grouping field is used in HAVING clause

标签 mysql sql select group-by having

有没有办法更正此查询,使其在启用 ONLY_FULL_GROUP_BY 的情况下工作?

SELECT LOWER(s) AS lower_s, SUM(i) AS sum_i
FROM t
GROUP BY 1
HAVING LENGTH(lower_s) < 5

给出错误信息

Non-grouping field 'lower_s' is used in HAVING clause

Fiddle

最佳答案

你为什么不直接使用 where LENGTH(LOWER(s)) < 5

似乎使用了having不在这里。

根据 having sql wiki

A HAVING clause in SQL specifies that an SQL SELECT statement should only return rows where aggregate values meet the specified conditions. It was added to the SQL language because the WHERE keyword could not be used with aggregate functions.[1]

关于MySQL 错误 : Non-grouping field is used in HAVING clause,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34390426/

相关文章:

mysql - 我如何将 mongodb 中的相同模式重写为 mySql

MySQL 内连接(带别名)

mysql - SET SQL_MODE 影响其他/所有数据库?

javascript - 设置文本区域中各行的样式

mysql - 数据库中所有表的字段总数

sql - 尝试运行此 SQL 脚本时出现以下错误 : null,

mysql从查询的2个字段的结果中得到差异

MySQL:选择搜索字符串中出现的最长字符串

mysql - 如何在mysql中显示月报表

sql - 如何有效地找出哪条记录已被删除?