我的代码如下所示:
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
- 所以服务器还不知道该别名。
首先,表中所有表的乘积FROM
条款成立。
The WHERE
然后评估子句以消除不满足 search_condition 的行。
接下来,使用中的列对行进行分组GROUP BY
clause.
那么,不满足条件的组search_condition
in the HAVING
条款被消除。
接下来,表达式中SELECT
语句目标列表被评估。
If the DISTINCT
关键字出现在 select 子句中,重复的行现在被消除。
The UNION
在评估每个子选择之后进行。
最后,结果行根据指定的列进行排序ORDER BY
clause.
TOP
条款被执行。
希望这能回答您的问题。此外,它还解释了为什么别名可以在ORDER BY
clause.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)