2014-05-15 93 views
0

與來自其它行數據行我有一個大表的記錄,其中的主鍵是一個項目碼是一個int。SQL更新在同一表

大量的記錄是過時的,我想,以取代信息在這些行的信息在其他行同時保持舊的主鍵。

所以,如果我有兩行:

ITEM_CODE LANGUAGE LABEL 
12345678 ENG   OLD LABEL 
87654321 EN-GB  NEW LABEL 

進出口尋找寫的SQL語句會離開我下表

ITEM_CODE LANGUAGE LABEL 
12345678 EN-GB  NEW LABEL 
87654321 EN-GB  NEW LABEL 

與當我看着UPDATE語句我一直在尋找對於類似的東西

UPDATE table 
SET language1 and label1 WITH language2 and label 2 
WHERE item code1 = item code 2 

我在SQL Server Management Studio中做這一切

希望能對你有所幫助。 感謝

+1

_「WHERE item code1 = item code 2」_但這些不同於'ITEM_CODE'。他們有什麼關係? –

+0

對不起,他們會不同。我的意思是它更多的是一種特定的兩種物品代碼。就像在舊的和新的一樣。在哪裏是錯誤的選擇單詞。 – user183200

+0

您還沒有指定這些記錄是如何關聯的。你想用哪些記錄更新哪些記錄?你需要自己加入這張桌子,但你必須知道如何。由於'ITEM_CODE'是你不能在這個鏈接(因爲它是唯一)的主鍵。但所有其他列也不同。 –

回答

0

改變你的代碼如下圖所示:

UPDATE table SET LANGUAGE = (Select LANGUAGE from table where ITEM_CODE = 87654321) 
        LABEL = (Select LABEL from table where ITEM_CODE = 87654321) 
WHERE ITEM_CODE = 12345678 

它會爲你的榜樣工作,你也可以在其他的語法和方式把它改寫.....

如果你是不同的目標,請詳細解釋一下。

祝你好運