写一个系统的时候遇到这个问题:
在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;
Logo

更多推荐