这是有效的ANSI SQL吗?:
SELECT 1 AS X
,2 * X AS Y
,3 * Y AS Z
Run Code Online (Sandbox Code Playgroud)
因为Teradata(12)可以做到这一点,以及这个(是的,疯了不是它):
SELECT 3 * Y AS Z
,2 * X AS Y
,1 AS X
Run Code Online (Sandbox Code Playgroud)
但是SQL Server 2005需要这样的东西:
SELECT X
,Y
,3 * Y AS Z
FROM (
SELECT X
,2 * X AS Y
FROM (
SELECT 1 AS X
) AS X
) AS Y
Run Code Online (Sandbox Code Playgroud) 在以下语句中,将f1始终获得f2以前的值?或者f2有时会先更新并f1最终结束NULL?我的印象是声明中的新值不可用,f2在处理记录时具有旧值,但我找不到一个说明这一点的权威位置.
UPDATE x
SET
x.f1 = x.f2,
x.f2 = NULL
Run Code Online (Sandbox Code Playgroud)