为什么我不能在having 子句中使用聚合的别名?

2023-12-26

我的代码如下所示:

select col1,count(col2) as col7
from --some join operation
group by col1
having col7 >= 3 -- replace col7 by count(col2) to make the code work

我的代码导致错误“无效的列名'col7'”。为什么会出现这种情况? SQL不允许我在最后一行使用col7,这似乎不合逻辑。

我正在使用 SQL Server Express 2008


The HAVING子句在之前评估SELECT- 所以服务器还不知道该别名。

  1. 首先,表中所有表的乘积FROM条款成立。

  2. The WHERE然后评估子句以消除不满足 search_condition 的行。

  3. 接下来,使用中的列对行进行分组GROUP BY clause.

  4. 那么,不满足条件的组search_condition in the HAVING条款被消除。

  5. 接下来,表达式中SELECT语句目标列表被评估。

  6. If the DISTINCT关键字出现在 select 子句中,重复的行现在被消除。

  7. The UNION在评估每个子选择之后进行。

  8. 最后,结果行根据指定的列进行排序ORDER BY clause.

  9. TOP条款被执行。

希望这能回答您的问题。此外,它还解释了为什么别名可以在ORDER BY clause.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不能在having 子句中使用聚合的别名? 的相关文章

随机推荐