我有2個表。我需要更新數據tableB
中的數據,使用tableA
中的數據填充數據。SQL Server查詢更新
但問題在於設計(注意:我無法更改設計,因爲它是一個現成的系統,我只需要處理失敗)。
比方說tableA
(2列)數據源的結構,像這樣:
ID | NAME
1 dude
2 dud
3 bro
4 broo
5 killa
6 whale
--ID is an index and NAME is UNIQUE
現在tableB
(6列)目標(我很難一部分):
ID1 | NAME1 | ID2 | NAME2 | ID3 | NAME3
1 dude 2 dud 3 bro
4 broo 5 killa 6 whale
--All columns here has UNIQUE data though it is not set on the design.
--and so on until the end.
現在什麼我想要做的是UPDATE
這個名字在tableA
到tableB
這個名字對應那裏的ID's。
例子:表A的
ID from TableA is 1
Find ID=1 on TableB
If ID=1 then UPDATE the next column to 'dude'
例終是:表B的
ID | Name
9997 sweet
9998 jess
9999 grape
--The END
例終是:
ID1 | NAME1 | ID2 | NAME2 | ID3 | NAME3
9997 sweet1 9998 jess1 9999 grape1
--The END
請幫助我。
注:
- 所有指定表名和列名都只是爲了舉例說明。
- 表格中有更多列,但它們不需要更改/更改,所以我沒有包含它們的示例。
- 原因是
TableB
中的數據已被更改,並且不再匹配正確的數據。 - 所以我需要用正確的數據重新填充
TableB
,並且正確數據的唯一來源是TableA
。 - 最後,我使用SQL Server 2008的
-----編輯------
這是我的工作是完美的最終查詢:
UPDATE CHAR_INFOR
SET
CHARID0=(SELECT CONVERT(VARCHAR,substring(char_data, 9, 16)) from CHAR_DATA0 A WHERE A.CHAR_KEY=CHAR0_KEY),
CHARID1=(SELECT CONVERT(VARCHAR,substring(char_data, 9, 16)) from CHAR_DATA0 A WHERE A.CHAR_KEY=CHAR1_KEY),
CHARID2=(SELECT CONVERT(VARCHAR,substring(char_data, 9, 16)) from CHAR_DATA0 A WHERE A.CHAR_KEY=CHAR2_KEY);