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

时间:2025-02-21 09:49:52

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

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

A表:

ID name age class
1 张三 17 class1
2 李四 18 class1
3 王五 19 class1
4 Lisa 20 class1

B表:

ID name class
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;

相关文章