Sql 在选择查询中使用别名
我需要问一下如何在Select查询中使用Alias 我需要这个Sql 在选择查询中使用别名,sql,sql-server,oracle,Sql,Sql Server,Oracle,我需要问一下如何在Select查询中使用Alias 我需要这个 SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A) FROM TABLE 您不能这样做: SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A) FROM TABLE 但是,您可以执行以下操作: SELECT (Another Sub Query WHERE ID = A.som
SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A) FROM TABLE
您不能这样做:
SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A) FROM TABLE
但是,您可以执行以下操作:
SELECT (Another Sub Query WHERE ID = A.somecolumn)
FROM table
JOIN SELECT (Complex SubQuery) AS A on (A.X = TABLE.Y)
或
问题是,您不能在SELECT和WHERE子句中引用这样的别名,因为在执行SELECT或WHERE部分时,它们不会进行计算。您也可以使用
having
子句,但是having子句不使用索引,如果可能,应该避免使用 您可以这样重写查询
SELECT Complex.A, (Another Sub Query WHERE ID = Complex.A)
FROM TABLE
CROSS JOIN ((Complex SubQuery) AS A) Complex
您可以使用的另一个解决方案:
SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A)
FROM
TABLE MAIN
OUTER APPLY (SELECT (Complex SubQuery) AS A)
?? 也许你的意思是:
其中ID=A.SomeColumn
你(和OP)正在使用A
作为表别名和列别名(在不同的地方)。我想答案是将复杂子查询
标量表达式更改为表表达式,但很难调试我们看不到的代码。我同意你的看法。我需要使这个查询更有效率。
SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A)
FROM
TABLE MAIN
OUTER APPLY (SELECT (Complex SubQuery) AS A)