解决Microsoft SQL Server中Field表歧义的UPDATE语句报错问题
修复SQL Server UPDATE语句的“table 'field' is ambiguous”报错
这个报错的原因是:你在UPDATE语句中直接引用了[ootesting]..[Field],但在FROM子句里多次关联了同一个Field表并定义了别名(oofield和oofield2),SQL Server无法确定你要更新的是哪个Field表实例。
根据你的业务逻辑,需要更新的是存储邮箱的Field记录(对应DefinitionId F96614C2-3B83-455C-92D3-1EC8CF9A8882),也就是oofield2这个别名对应的表实例。修复后的SQL语句如下:
update oofield2 set [Text] = [matrix].[E-Mail] from [linkedserver] matrix join [ootesting]..[Field] oofield on matrix.personalnr = oofield.Text and oofield.DefinitionId = 'BEEFE7A8-E679-41D8-AF8D-258AC7757E01' join [ootesting]..[secacc] oosecacc on oofield.SecurityAccount_Id = oosecacc.Id join [ootesting]..[Field] oofield2 on oosecacc.id = oofield2.SecurityAccount_Id and oofield2.DefinitionId = 'F96614C2-3B83-455C-92D3-1EC8CF9A8882' where oofield.Text is not null
关键修改点:
- 将UPDATE后的表名替换为目标别名
oofield2,明确告诉SQL Server要更新的是哪个Field表实例 - 保留原有关联逻辑,确保通过员工编号找到对应用户,再关联到邮箱字段的记录
内容的提问来源于stack exchange,提问作者user19828548
相关产品推荐
相关产品推荐

