Why can#39;t I use alias in a count(*) quot;columnquot; and reference it in a having clause?(为什么我不能在计数(*)“列中使用别名?并在具有条款中引用它?)
问题描述
我想知道为什么我不能在 count(*) 中使用别名并在 having 子句中引用它.例如:
选择Store_id作为StoreId,count(*)作为_count从商店产品按 Store_id 分组_count >0
行不通..但如果我删除 _count 并使用 count(*) 代替它会起作用.
参见 CodeByMoonlight 在 文档2068439/why-cant-i-apply-a-criteria-on-a-sub-query/2068492#2068492">回答 你最近的问题.
HAVING 子句在 SELECT 之前进行评估 - 因此服务器还不知道该别名.
<块引用>- 首先形成 from 子句中所有表的乘积.
- 然后对 where 子句求值以消除不满足的行search_condition.
- 接下来,使用 group by 子句中的列对行进行分组.
- 那么,不满足中的search_condition的组有子句被删除.
- 接下来,select 子句目标列表中的表达式是评估.
- 如果distinct关键字出现在select子句中,重复行现已淘汰.
- 在评估每个子选择后采用 联合.
- 最后,根据列对结果行进行排序在 order by 子句中指定.
I was wondering why can't I use alias in a count(*) and reference it in the having clause. For instance:
select Store_id as StoreId, count(*) as _count
from StoreProduct
group by Store_id
having _count > 0
Wouldn't work.. But it works if I remove _count and use count(*) instead.
See the document referenced by CodeByMoonlight in an answer to your recent question.
The HAVING clause is evaluated before the SELECT - so the server doesn't yet know about that alias.
- First the product of all tables in the from clause is formed.
- The where clause is then evaluated to eliminate rows that do not satisfy the search_condition.
- Next, the rows are grouped using the columns in the group by clause.
- Then, Groups that do not satisfy the search_condition in the having clause are eliminated.
- Next, the expressions in the select clause target list are evaluated.
- If the distinct keyword in present in the select clause, duplicate rows are now eliminated.
- The union is taken after each sub-select is evaluated.
- Finally, the resulting rows are sorted according to the columns specified in the order by clause.
这篇关于为什么我不能在计数(*)“列"中使用别名?并在具有条款中引用它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么我不能在计数(*)“列"中使用别名?并在具有条款中引用它?


基础教程推荐
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- Sql Server 字符串到日期的转换 2021-01-01