【问题标题】:Why is it an error to use aggregate functions in a WHERE clause? [closed]为什么在 WHERE 子句中使用聚合函数会出错? [关闭]
【发布时间】:2013-11-15 22:33:25
【问题描述】:

我是 SQL 新手,阅读了很多资料,它只是告诉我改用 HAVING。替代方案是否有更深层次的解决方案或理由?

另外,在 HAVING 子句中使用聚合函数不是错误吗?这与在 where 子句中使用 one 有何不同?

【问题讨论】:

标签: mysql sql


【解决方案1】:

WHERE 子句中应用的条件是指应用 GROUP BY 子句之前表中的行中的值,而 HAVING 子句中的条件适用于 GROUP BY 后的结果集。

因此,您可以在 HAVING 子句中引用 GROUP BY 列或聚合,但不能保证其值在 GROUP BY 后是唯一的列。在WHERE子句中,GROUP BY的结果集是不可用的,所以可以引用任意行值,但不能引用聚合结果。

【讨论】:

    猜你喜欢
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多