SQL中的HAVING子句是否按行或按组运行?
也就是说,它会删除不符合指定约束的单个行吗?
还是只删除不符合指定限制的整个组?
答案 0 :(得分:2)
HAVING
在GROUP BY
之后过滤结果。因此,它每组过滤一行。
HAVING
可以具有不在SELECT
中的聚合表达式。尽管它们不在结果集中,但它们隐式包含在聚合中。
MySQL扩展了HAVING
子句。如果没有聚合,则它的行为类似于WHERE
,但它允许使用列别名。
MySQL还扩展了GROUP BY
以包括未聚合的列。您可以将它们视为聚合函数ANY()
,该函数从组中的任何行返回该表达式的值。