具有多个删除语句的 SQL Server CTE

Gar*_*ary 5 common-table-expression sql-server-2016

我有一个 CTE:

;WITH DeleteTarget AS
(
    ....
)
Run Code Online (Sandbox Code Playgroud)

我如何将此 CTE 用于两个删除语句 - 可能像:

DELETE FROM [TableA]
WHERE ColumnA IN (SELECT Id FROM DeleteTarget)

DELETE FROM [TableB]
WHERE ColumnB IN (SELECT Name FROM DeleteTarget)
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 4

你不能 - CTE 仅存在于下一个语句

如果您多次需要 CTE 提供的此信息,您需要:

  • 将结果集存储到表变量或临时表中
  • 然后使用该表变量/临时表执行多个语句