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 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。

sql

5个回答

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

q837766242
q837766242 是的 写错了 按照您说的解决问题了
接近 2 年之前 回复

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐