MySQL 错误:在 HAVING 子句中使用了非分组字段

And*_*eKR 4 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
Run Code Online (Sandbox Code Playgroud)

它给出了错误信息

HAVING 子句中使用了非分组字段“lower_s”

小提琴

amo*_*mow 5

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

似乎在having这里使用的不正确。

根据有sql wiki

SQL 中的 HAVING 子句指定 SQL SELECT 语句应仅返回聚合值满足指定条件的行。它被添加到 SQL 语言中,因为 WHERE 关键字不能与聚合函数一起使用。 [1]