SQL将一个A表某列替换到B表某列

SQL将一个A表某列替换到B表某列

问题描述:

图片说明
上面是A表 下面是B表
A表相当于字典 字段 FItemID 对应 FNneme
想要将B表字段 FItemID 替换成A表的 FName
但B表的 FItemID 有很多重复项 执行

 update B set FItemID = (select FName from A where FItemID = FItemID)

消息 512,级别 16,状态 1,第 1 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。

个人认为你的代码有点错误,应该是update B set FItemID=(select FName from A where A.FItemID=B.FItemID)
由于两张表都有FItemID列,所以书写代码时应该说明是哪张表的FItemID。

update A, B set B.FItemId = A.FName where B.FItemId = A.FItemId

可以用视图来实现,创建一个视图包括 A 表的 FName 列与 B 表除 FItemID 列,然后查询该视图,查询到的表就是你想要的表

这样:
update B,A set B.FItemID = A.FItemID where B.FItemID = A.FItemID

是因为你A表 FItemID有重复,不是B表。另外不建议你直接修改B表,建View比较好。但如果你重构数据库,那没问题