SQL Server - 在子查询中使用列别名

Posted

技术标签:

【中文标题】SQL Server - 在子查询中使用列别名【英文标题】:SQL Server - Using a column alias in a subquery 【发布时间】:2009-01-07 18:14:35 【问题描述】:

我有以下查询,它适用于 mysql,但拒绝适用于 SQL 服务器:

SELECT table1.someField AS theField, 
       COUNT(table2.someField) / (SELECT COUNT(someField) FROM table1 WHERE someField = theField),
FROM table1 LEFT JOIN table2 ON table1.someField = table2.someField

SQL Server 似乎不喜欢子查询中的别名。有人告诉我我需要使用 CTE,但我以前从未使用过它们。这是正确的吗?

【问题讨论】:

【参考方案1】:

问题很可能在于子查询中的混乱

SELECT COUNT(someField) FROM table1 WHERE someField = theField

条件中的someField 将是本地的 - 但您也可以访问table1.someField

怎么样

SELECT COUNT(t3.someField) FROM table1 t3 WHERE t3.someField = table1.someField 

?

【讨论】:

以上是关于SQL Server - 在子查询中使用列别名的主要内容,如果未能解决你的问题,请参考以下文章

如何在子查询 SQL Server 中选择多个项目

在子查询中使用别名

在 T-SQL 中,如何在子查询中引用表变量?

我们如何在子查询 SQL Server 中分配局部变量

SQL Server 是不是可以使用 PHP 从 UNION 查询中返回不同的别名列名?

在子查询和别名中排序