SQL Server从记录列表更新多个记录

时间:2018-12-02 13:54:53

标签: sql sql-server

我正在尝试找到从某些记录列表更新数据的方法。

我必须更新约1000个序列号的格式,该列表包含SN的新旧值。看起来像:

A012-234 =SSM10145-01
...
A986-477 = SSM15845-52

我一步一步地做。

DECLARE @PrevID char(25);
DECLARE @NewID char(25); 

SET @PrevID = 'A012-234';
SET @NewID = 'SSM10145-01'; 

UPDATE [dbo].[Device]
SET 
      ,[DeviceTypeID] = 1
      ,[Description] = @NewID
      ,[DeviceSN] = @NewID
      ,[LogLevel] = 0
WHERE DeviceSN = @PrevID
GO

如何在一个请求中更新所有记录?

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以在join中使用update。所以:

with vals as (
      select v.*
      from (values ('A012-234', 'SSM10145-01'),
                   ('A986-477', 'SSM15845-52')
           ) v(previd, newid)
     )
update d
   set DeviceTypeID = 1,
       Description = v.newid,
       DeviceSN = v.newid
       LogLevel = 0
from device d join
     vals v
     on d.DeviceSN = v.previd;

如果旧值和新值来自表,则只需将表直接插入查询即可。