经常出现要求说要把A表中的某个字段内得数据根据查询条件与B表进行一个替换或者添加,这个时候我普遍用update语句和EXISTS进行一个修改
用户 A表
Id | 字典编码 | 状态 |
---|---|---|
0001 | 0 | |
0002 | 4402 | 1 |
0003 | 0 |
dd
地址 B表
主键Id | code | name | userId |
---|---|---|---|
1 | 4400 | 北京 | 0001 |
2 | 4401 | 上海 | 0002 |
3 | 4401 | 上海 | 0003 |
现在需要把a表中状态为0 且字典编码为空的数据全部替换为B表里面的code
update A set 字典编码 = (select code from B where userId = id)
where EXISTS(select 1 from B where userId = id and 状态 =0 and 字典编码 is null)
第一次查询B表是为了把B表的数据和A表进行一个匹配,EXISTS后面的查询是为了把需要进行修改的数据筛查出来,这样就可以精确的把需要修改的数据改查询出来。