小编Luk*_*uke的帖子

更新从sys.columns和sys.tables中选择的表中的值

我们的一个用户ID已在数据库中的一个表中更新,但在其他63个表中未更新。我需要使用UserID列在所有其他表中更新此ID。

我已经设法从sys.tables和sys.columns中选择了我需要的所有表,但我不是100%地确定如何更新这些表中的每个表的值。

我正在使用此查询选择表:

SELECT      c.name  AS 'ColumnName'
            ,t.name AS 'TableName'
FROM        sys.columns c
JOIN        sys.tables  t   ON c.object_id = t.object_id
WHERE       c.name LIKE '%UserID%'
ORDER BY    TableName
            ,ColumnName;
Run Code Online (Sandbox Code Playgroud)

这给了我所有相关表和列名的列表。

我也修改了上面的查询以生成SQL:

declare @newID varchar(12) = '149080'
declare @oldID varchar(12) = '146423'

SELECT 'UPDATE ' + t.name + ' SET ' + c.name + ' = ' + @newID + ' WHERE ' + c.name + ' = ' + @oldID + ';'
FROM        sys.columns c
JOIN        sys.tables  t   ON c.object_id = …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

1
推荐指数
1
解决办法
84
查看次数

标签 统计

sql ×1

sql-server ×1