gpt4 book ai didi

sql-server-2008 - SQL Server 查询更新

转载 作者:行者123 更新时间:2023-12-04 06:54:39 26 4
gpt4 key购买 nike

我有 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 tableA 中的名称到 tableB 中对应于 ID 的名称。

例子:

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

最佳答案

似乎标准 SQL 应该可以工作:

UPDATE TableB B 
SET Name1=(SELECT Name from TableA A where A.ID=ID1),
Name2=(SELECT Name from TableA A where A.ID=ID2),
Name3=(SELECT Name from TableA A where A.ID=ID3);

关于sql-server-2008 - SQL Server 查询更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11657488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com