我有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);