我尝试根据我的另一个子查询更新几个表。 语法是什么?
我试过了:
;with sub_query as (....)
update T
set X = Y
from table1 T
inner join sub_query on ...
update T
set X = Y
from table2 T
inner join sub_query on ...
但我在更新table2
查询中遇到错误:
无效的对象名称'sub_query'。
更新第二个查询的语法应该是什么?我不想再次编写sub_query
,因为这是一个非常复杂的查询。
谢谢!
答案 0 :(得分:0)
CTE table
仅在创建后使用一次!您可以使用表变量或临时表而不是它。像这样:
CREATE @sub_query (...)
INSERT INTO sub_query ....
UPDATE ...
答案 1 :(得分:-1)
使用视图:
CREATE VIEW view_sub_query .....
UPDATE T SET X=Y FROM table1 T INNER JOIN view_sub_query ON ...
UPDATE T SET X=Y FROM table2 T INNER JOIN view_sub_query ON ...
如果必须在很多地方使用它,请使用表函数:
CREATE FUNCTION fun_sub_query .....
UPDATE T SET X=Y FROM table1 T INNER JOIN fun_sub_query ON ...
UPDATE T SET X=Y FROM table2 T INNER JOIN fun_sub_query ON ...