SQL Server多条件匹配将Table1值更新到Table2字段执行无变化问题
问题原因
你编写的SQL未生效的核心原因是子查询内字段拼写错误,将itemname误写为itemaname(多了一个字母a),导致子查询无法读取到Table1的对应字段值,所有更新结果都为NULL,看起来就像字段没有发生变化。
修正方案
推荐使用SQL Server支持的UPDATE FROM关联更新写法,性能更优,也能避免子查询返回多行导致的报错问题:
-- 新增字段语句保持不变 ALTER TABLE Table2 ADD ObjectName nvarchar(50) Null; -- 关联更新语句 UPDATE t2 SET t2.ObjectName = t1.itemname FROM Table2 t2 INNER JOIN Table1 t1 ON t2.Id = t1.id AND t2.TeamId = t1.teamid AND t2.EmployeeId = t1.employeeid AND t2.Day = t1.day;
执行效果说明
该语句只会更新两个表四个字段完全匹配的行,未匹配到的行ObjectName字段会保持NULL值,和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者Bakeduck2021
相关产品推荐
相关产品推荐

