在查询中使用别名并使用它

asb*_*asb 17 sql alias

我对sql中的别名有疑问和疑问.如果我想在同一个查询中使用别名,我可以使用它.例如:考虑表名为xyz的列a和b

select (a/b) as temp , temp/5 from xyz
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

Jos*_*osh 14

您正在讨论为查询中的表达式提供标识符,然后在查询的其他部分重用该标识符?

这在Microsoft SQL Server中是不可能的,几乎所有的SQL经验都限于此.但是你可以做到以下几点.

SELECT temp, temp / 5
FROM (
    SELECT (a/b) AS temp
    FROM xyz
) AS T1
Run Code Online (Sandbox Code Playgroud)

显然这个例子并不是特别有用,但如果你在几个地方使用这个表达式,它可能会更有用.当表达式很长并且您希望对它们进行分组时,它可以派上用场,因为GROUP BY子句要求您重新声明表达式.

在MSSQL中,您还可以选择创建在表模式中指定但不在查询中指定的计算列.


Gur*_*uru 5

您也可以使用Oracle with语句.其他DB也有类似的声明.这是我们用于Oracle的那个.

with t
as (select a/b as temp
from xyz)
select temp, temp/5
from t
/
Run Code Online (Sandbox Code Playgroud)

这具有性能优势,特别是如果您有涉及多个嵌套查询的复杂查询,因为WITH语句仅计算一次并在后续语句中使用.