我有一个包含 50,000 个更新查询的 SQL Server 文件,如下所示:
UPDATE [dbo].[TABLE1] SET [COLUMN2] = 'abc123' WHERE [Id] = 100;
UPDATE [dbo].[TABLE1] SET [COLUMN2] = 'def456' WHERE [Id] = 101;
UPDATE [dbo].[TABLE1] SET [COLUMN2] = 'ghi789' WHERE [Id] = 205;
UPDATE [dbo].[TABLE1] SET [COLUMN2] = 'jkl012' WHERE [Id] = 216;
UPDATE [dbo].[TABLE1] SET [COLUMN2] = 'mno345' WHERE [Id] = 350;
我不想运行此文件并同时执行所有 50,000 个查询。 通过一次执行 1000 个查询来执行此操作的最佳方法是什么,完成后继续执行下一个 1000 个查询,直到所有查询都执行完毕? 另外,如果出现错误,我该如何回滚?
最佳答案
您应该使用这些值创建一个临时表。然后您可以将其用于更新
。如果没有,您可以在查询中创建一个派生表:
with t as (
select v.*
from (values (100, 'abc123'),
(200, 'def456'),
. . .
) v(id, column2)
)
update t1
set column2 = t.column2
from dbo.table1 t1 join
t
on t1.id = t.id;
关于sql - 一次运行 1000 个查询的大量更新查询的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53217987/