Sql 根据另一个表中匹配的2个字段更新字段
这是我的第一篇帖子,所以请温柔一点;) 我正试图根据Sql 根据另一个表中匹配的2个字段更新字段,sql,tsql,sql-update,Sql,Tsql,Sql Update,这是我的第一篇帖子,所以请温柔一点;) 我正试图根据表1和表2中两列上的匹配数据更新表1列上的字段 列名为: Table1.KeyField = Table2.KeyField Table1.FieldName = Table2.FieldName 表1中要更新的列为带零的数值 我尝试过的每一种方法都会导致错误: 子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情 谢谢你的帮助 谢谢样本数据: create table Table1 (KeyField in
表1
和表2
中两列上的匹配数据更新表1
列上的字段
列名为:
Table1.KeyField = Table2.KeyField
Table1.FieldName = Table2.FieldName
表1中要更新的列为带零的数值
我尝试过的每一种方法都会导致错误:
子查询返回了多个值。这是不允许的,因为
子查询后面是=,!=,=或者当子查询用作
表情
谢谢你的帮助
谢谢样本数据:
create table Table1 (KeyField int,FieldName varchar(20),Targetcolumntoupdate numeric(5,2));
create table Table2 (KeyField int,FieldName varchar(20),Sourcecolumntoupdate numeric(5,2));
insert into Table1 values (1,'F1',0.00);
insert into Table1 values (2,'F1',0.00);
insert into Table2 values (1,'F1',1.00);
insert into Table2 values (1,'F1',2.00);
是否尝试将表1中的列更新为:
-- Wrong approach possible cause of error stated
Update Table1
Set Table1.Targetcolumntoupdate =
( SELECT (T2.Sourcecolumntoupdate)
FROM Table1 T1
INNER JOIN Table2 T2 ON
T1.KeyField = T2.KeyField AND T1.FieldName = T2.FieldName) ;
然后它是错误的,因为您可以看到为选择更新targetColumntUpdate所需的数据而创建的子查询将返回多个可能的值
正确的查询如下:
Update T1
Set T1.Targetcolumntoupdate = (T2.Sourcecolumntoupdate)
FROM Table1 T1
INNER JOIN Table2 T2 ON
T1.KeyField = T2.KeyField AND T1.FieldName = T2.FieldName;
希望这有帮助 您的更新查询在哪里?我们应该如何帮助您更正sql查询而不查看它?独立运行子查询。看看它回来了。决定您想要哪一行,并确定获取该行的方法。
Update T1
Set T1.Targetcolumntoupdate = (T2.Sourcecolumntoupdate)
FROM Table1 T1
INNER JOIN Table2 T2 ON
T1.KeyField = T2.KeyField AND T1.FieldName = T2.FieldName;