私は2つのテーブルを持っています。のデータを更新し、からのデータをtableB
入力する必要がありますtableA
。
しかし、問題は設計です (注: 既製のシステムであるため、設計を変更することはできません。失敗に対処する必要があります)。
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
、そこにある IDtableA
に対応する名前に名前を付けることです。tableB
例:
ID from TableA is 1
Find ID=1 on TableB
If ID=1 then UPDATE the next column to 'dude'
TableA の例の終わりは次のとおりです。
ID | Name
9997 sweet
9998 jess
9999 grape
--The END
TableB の例の終わりは次のとおりです。
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);