q837766242
q837766242
采纳率100%
2018-10-09 11:13

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 xi13338375262 3年前

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

    点赞 3 评论 复制链接分享
  • msx985211 创业的鱼 3年前

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

    点赞 2 评论 复制链接分享
  • bluepigya bluepigya 3年前

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

    点赞 1 评论 复制链接分享
  • JIALIH_H JIALIH_H 3年前

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

    点赞 1 评论 复制链接分享
  • HXNLYW 葫芦胡 3年前

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

    点赞 评论 复制链接分享