繁体   English   中英

使用查询结果作为更新的表名

[英]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_tableid作为更新查询的条件,因此对于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM