MS SQL相当于查询中MySQL用户定义的变量

时间:2013-11-04 16:27:16

标签: mysql sql-server

在MySQL中,如果你想报告一个公式,然后在另一个公式中使用该结果,你可以做类似的事情:

SELECT @var1 := column1+column2 AS var1
, POWER(@var1,2) AS var2squared
FROM database.table;

MS SQL Server中是否有等效的内容?

3 个答案:

答案 0 :(得分:3)

据我所知,SQL Server中没有相应的内容。

但你可以随时使用CTE:

WITH data AS (
    SELECT column1 + column2 AS var1
    FROM table
)
SELECT var1, POWER(var1, 2) AS var2squared
FROM data;

答案 1 :(得分:3)

这是不可能的,因为MSSQL实际上可以正常工作。 MySQL本质上是一个围绕SQL的过程包装器,因此这个构造可以工作,因为它从左到右处理 - 因此在评估第二个字段时存在@var1

MSSQL正确地将SQL作为基于原子表的查询语言执行,因此在评估字段时,所选数据作为一个整体可用,然后根据中间结果对它们进行全部评估。

另一个答案中提出的解决方法是解决问题的好方法。

答案 2 :(得分:3)

您也可以使用CROSS APPLY:

SELECT v.Var1, POWER(v.Var1, 2) AS Var2Squared
    FROM [Table] t
    CROSS APPLY (SELECT t.Column1 + t.Column2 AS Var1) v
;