在 MySQL 中,如果您想报告一个公式,然后在另一个公式中使用该结果,您可以执行以下操作:
SELECT @var1 := column1+column2 AS var1
, POWER(@var1,2) AS var2squared
FROM database.table;
MS SQL Server 中是否有等价物?
在 MySQL 中,如果您想报告一个公式,然后在另一个公式中使用该结果,您可以执行以下操作:
SELECT @var1 := column1+column2 AS var1
, POWER(@var1,2) AS var2squared
FROM database.table;
MS SQL Server 中是否有等价物?
据我所知,SQL Server 中没有等价物。
但您始终可以使用 CTE:
WITH data AS (
SELECT column1 + column2 AS var1
FROM table
)
SELECT var1, POWER(var1, 2) AS var2squared
FROM data;
这是不可能的,因为 MSSQL 实际上可以正常工作。MySQL 本质上是一个围绕 SQL 的过程包装器,因此这种构造可以工作,因为它从左到右处理 - 因为@var1
在评估第二个字段时存在。
MSSQL 将 SQL 作为基于原子表的查询语言正确执行,因此在评估字段时可以使用整个选定的数据,然后根据中间结果对它们进行评估。
另一个答案中提出的解决方法是解决问题的好方法。
您也可以使用交叉应用:
SELECT v.Var1, POWER(v.Var1, 2) AS Var2Squared
FROM [Table] t
CROSS APPLY (SELECT t.Column1 + t.Column2 AS Var1) v
;