kam*_*ami 6 sql sql-server sql-server-2008
我们CTE是否可以执行多个更新命令?
With Query AS
(
SELECT
Table_One.FOO AS FOO,
Table_Two.BAR AS BAR
FROM FOO
JOIN BAR ON FOO.ID = BAR.ID
)
UPDATE
Query.FOO = 1;
UPDATE
Query.BAR = 2;
Run Code Online (Sandbox Code Playgroud)
在示例中,第二个UPDATE命令上的查询不再可用。
编辑:
我的工作代码如下所示:
With Query AS
(
SELECT
Table_One.FOO AS FOO,
Table_Two.BAR AS BAR
FROM FOO
JOIN BAR ON FOO.ID = BAR.ID
)
UPDATE
Query.FOO = 1
With Query AS
(
SELECT
Table_One.FOO AS FOO,
Table_Two.BAR AS BAR
FROM FOO
JOIN BAR ON FOO.ID = BAR.ID
)
UPDATE
Query.BAR = 2;
Run Code Online (Sandbox Code Playgroud)
因为您不能使用一个UPDATE命令来更新两个表,所以我需要两个Update命令。正确的问题是,如果需要更改CTE中的“选择”,则必须在代码中的两个位置上进行选择。
您可以将CTE
结果插入到@Table
变量中,并在代码块中任何需要的地方使用此表。(您可以join
将此表与实际表一起执行UPDATE/INSERT/DELETE
等)。您不能在多个语句中使用相同的 CTE,因为 CTE 仅是后续语句的一部分。