2017-03-29 76 views
0

我想更新一個表,但是我遇到的問題如下:我有一個表中有超過60K個主鍵的列,名爲TerminalID。這個表有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' 
+0

你可以使用連接 –

+1

請提供樣本數據和解釋'SerialNumber'價值是如何創造與TerminalId你想要一個臨時表/ CTE/values子句和序列號更新決心。 –

+0

可能重複的[如何從SQL Server中的SELECT進行更新?](http://stackoverflow.com/questions/2334712/how-to-update-from-a-select-in-sql-server) – Anand

回答