SQL根据一个表更新另一个表中的内容update、where

写一个系统的时候遇到这个问题:
在A表中有a客户和a办事处字段;B表中有b客户和b办事处字段
如果a客户在B表中有一样的b客户,那么把a办事处替换为b办事处,如果没有则不变
并且想用一句SQL实现

以下举例说明(MySQL):
更新A表,如果B表中有相同的人,则将A表中的class1替换成B表中的class,如果没有相同的人则class不变

A表:

IDnameageclass
1张三17class1
2李四18class1
3王五19class1
4Lisa20class1

B表:

IDnameclass
1张三class2
2李四class2
3王五class2

第一次尝试的写法:

UPDATE A SET A.class=(SELECT class FROM B WHERE A.name=B.name)WHERE A.class='class1';

上面的方法可以将相应的class1更新为class2,但表B中没有的Lisa的class被替换为null
下方的语句可以按需求实现更新且不会改变不符合条件的值:

UPDATE A,B SET A.class=B.class where A.name=B.name;
  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值