[英]Use Query Result as Table Name for Update
我有一个表,它返回我想用于更新查询的行。
这个查询:
SELECT
'data_'+ REPLACE(ft.uid, '-', '_') dataview_table,
ft.id
FROM father_table ft
回报:
dataview_table id
data_A65225EB_AEE4_478B_AC86_03E5F0D92F5B 10000291
data_0234FF89_E561_4918_870A_3FFD9928E647 10000291
data_0234FF89_E561_4918_870A_3FFD9928E647 10000291
data_021F9D95_8F87_402B_A53B_5C5AE4084D9C 10000291
我想要做的是使用dataview_table
和id
作为更新查询的条件,因此对于father_table
上的每一行,它将执行以下操作:
UPDATE dataview_table SET status = 5 WHERE id = id
我怎样才能做到这一点?
您无法直接获取并执行它,相反,您必须使用动态 SQL 或查询字符串方法。 像这样
DECLARE @Qry VARCHAR(MAX)
;WITH CTE
AS
(
SELECT
Qry = 'UPDATE data_'+ REPLACE(ft.uid, '-', '_')+' SET status = 5 WHERE id = '+ CAST(ft.id AS VARCHAR(20))
FROM father_table ft
)
SELECT
@Qry = STRING_AGG(Qry,';')
FROM CTE
EXEC(@Qry)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.