了解在 HAVING 子句中使用别名的限制
在 SQL 中,在 HAVING 子句中使用别名进行聚合似乎很直观。然而,由于 SQL 查询的特定计算顺序,这种方法会导致错误“无效的列名”。
要理解此限制,了解 SQL 如何执行查询至关重要:
因此,由于 HAVING 子句在 SELECT 子句之前计算,因此在 SELECT 语句中分配给聚合的别名(例如,“col7 ") 在计算 HAVING 表达式时 SQL 还不知道。因此,会出现错误“无效的列名‘col7’”。
相反,ORDER BY 子句在 SELECT 语句之后计算,允许使用 SELECT 子句中定义的别名。这是因为 ORDER BY 子句对 SELECT 语句创建的结果集进行操作。
要解决此问题,请将 HAVING 子句中的别名替换为实际的聚合表达式,如下所示:
以上是为什么我不能在 SQL 的 HAVING 子句中使用别名?的详细内容。更多信息请关注PHP中文网其他相关文章!