为什么 HAVING 子句中禁止使用别名聚合
在 SQL 中,用户在尝试对聚合使用别名时经常会遇到错误HAVING 子句。这源于 SQL 处理查询的特定顺序。
用于过滤 GROUP BY 操作结果的 HAVING 子句在 SELECT 子句之前计算。因此,在评估 HAVING 子句时,SELECT 子句中定义的别名尚不可用。
为了更好地理解这一点,让我们考虑以下查询执行的逻辑顺序:
由于 HAVING 子句在 SELECT 子句之前计算,因此它无法引用稍后在查询中定义的别名。此限制解释了为什么在 HAVING 子句中使用别名(如示例所示)会导致“无效的列名”错误。
相反,别名在 ORDER BY 子句中起作用,因为 ORDER BY 子句是在 SELECT 子句之后评估。因此,SELECT 子句中定义的别名可在 ORDER BY 子句中使用。
以上是为什么不能在 SQL 的 HAVING 子句中使用别名聚合?的详细内容。更多信息请关注PHP中文网其他相关文章!