我正在努力将 SQL 中的数据传输到新列(这并不困难,因为我对 SQL XD 非常缺乏经验)。我将尝试描述问题:
我需要使用 UPDATE 语句从现有tableB.potatoes传输一些数据到在现有tableA中 新创建的列potato_new ( tableB.potatoes -> tableA.potatoes_new 条件: -tableB 具有引用 tableA.ID 的外键 tableB.tableA_ID -tableB.potatoes 和 tableB.tableA_ID 不是唯一的,但在具有相同 tableA_ID 的寄存器中,土豆也是相同的: 例子: 表B 表A ID 表 A_ID 土豆 ID 土豆_新(当前)土豆_新(期望) 1 1 105 1 空 105 2 1 105 2 空 51 3 2 51 3 空 33 4 3 33 5 3 33 6 3 33 不需要从tableB.columnA中删除数据,只需复制到RIGHT寄存器: -> 其中 tableA.ID = tableB.tableA_ID
我搜索了一段时间,但没有找到我想要的(或者至少我不明白这些解决方案如何解决我的问题......)
PS:这是我的第一篇文章...对不起格式,我尝试了一段时间没有更好地管理。如果您有一些提示或链接...我将不胜感激
编辑:解决方案(在 GabrielVal 帮助我回答之后)
我必须对 GabrielVal 回答做的更改: 1. 我不得不将 tableB 替换为 a,因为 MERGE 语句在查找 tableB 中的几条记录时遇到问题,其中 tableB.tableA_ID = tableA.ID 2. 因此我删除了 INSERT INTO WHEN NOT MATCHED 因为我不想在 tableA 上创建新记录,而只是填充当前记录 将 dbo.tableA 合并为 [目标] 使用 (SELECT DISTINCT tableA_ID,potatoes_new FROM tableB WHERE Measurement_ID != 0 ) 作为 [来源] ON [源].tableA_ID = [目标].ID 匹配时 更新集 [目标].SystemID = [源].System_ID; 去