q837766242
2018-10-09 11:13
采纳率: 100%
浏览 3.8k

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • xi13338375262 2018-10-09 16:31
    已采纳

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

    已采纳该答案
    评论
    解决 4 无用
    打赏 举报
  • 创业的鱼 2018-10-10 03:17

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

    评论
    解决 4 无用
    打赏 举报
  • JIALIH_H 2018-10-09 14:05

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

    评论
    解决 无用
    打赏 举报
  • 葫芦胡 2018-10-10 01:53

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

    评论
    解决 无用
    打赏 举报
  • bluepigya 2018-10-10 08:31

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题