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