我正在尝试找到从某些记录列表更新数据的方法。
我必须更新约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
如何在一个请求中更新所有记录?
谢谢。
答案 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;
如果旧值和新值来自表,则只需将表直接插入查询即可。