根据主键更新包含不同数据的列

时间:2017-03-29 18:44:04

标签: sql sql-server

我想更新一个表,但我遇到的问题如下:我在一个名为TerminalID的列中有一个包含超过60K主键的表。此表有10个列,但我想更新名为SerialNumber的列,但问题是每个主键的序列号都不相同。

问题在于下面的更新SQL代码会将相同的序列号应用于我拥有的所有terminalID,而不是每个PK都不同。

有什么想法吗?

Use [testserver]

update [testtable]
set SerialNumber =''
from [testtable]
where [TerminalID] in ( ... )


terminalID    Serial Number
463328        215728108
168734        213808561
160879        214621937
451991       215523741

这是我现在能想到的唯一方法,一个接一个地做到这一点

Update [terminalsetting] SET [SerialNumber] ='766' WHERE [TerminalID] ='63872'
Update [terminalsetting] SET [SerialNumber] ='215728108' WHERE [TerminalID] ='463328'
Update [terminalsetting] SET [SerialNumber] ='213808561' WHERE [TerminalID] ='168734'

1 个答案:

答案 0 :(得分:0)

我会说使用rownumber列和CTE。这将为每行提供一个唯一的编号。 然后使用此号码并更新您的表格。

阅读本文 https://docs.microsoft.com/en-us/sql/t-sql/functions/row-number-transact-sql