MS SQL新手求助:
想將表2 的SN欄更新至表1的SN欄,卻無法成功
指令如下:
UPDATE [Prod1]
SET [Prod1].[SN] = [Prod2].[SN]
FROM [Prod1],[Prod2]
WHERE [Prod1].[ID] = [Prod2].[ID]
錯誤訊息如下:
無法在具有唯一索引 'IX_SN' 的物件 'dbo.Prod1' 中插入重複的索引鍵資料列。唯一索引鍵值是 (GA01)。
陳述式已經結束。
P.S.
1.[ID]是索引鍵但不能解除
2.若把這句改成
WHERE [Prod1].[ID] = 'a01'
是可以update成功的,不知為什麼?
表 1: prod1
ID name SN
a01 abc P0123
a02 dfe D1254
a03 dff P2256
a04 ggg D2223
a05 hhh P1125
a06 jjj D5563
表 2: prod2
ID name SN
a01 abc GA01
a02 dfe DA02
a03 dff PA56
a04 ggg DP22
a05 hhh PP12
a06 jjj DD56
*** 找到原因了,因為SN被設定成"唯一" "非叢集"索引
而我的SN資料有重複值(上表只是節錄)
還是很感謝各位熱心幫忙,
為避免此題一直掛著,
就將最佳解答給最先回應的大大好了!
祝大家工作順心~~
應該是這樣吧?
UPDATE [Prod1]
SET [Prod1].[SN] = [Prod2].[SN]
FROM [Prod2]
WHERE [Prod1].[ID] = [Prod2].[ID]
update A
set A.SN=B.SN
from prod2 as A
inner join prod1 as B on B.ID=A.ID
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=0b43108491fbcb8848c76826448d4e52