日度归档:2019年5月11日

mssql sqlserver update 后接两张表的方法分享


摘要:
下文通过举例的方式分享update后关联多张表的更新方法,如下所示:
实验环境:sql server 2008 R2


在我们应用update关键字时,最多的时候我们使用update更新单表,下文分享update更新单表,但是单表后关联多个其它表,如下所示:
常用的update语法格式:

 ---单表更新
 update table set [列名1]='列值1', [列名2]='列值2', [列名3]='列值3' 
     where ...
---多表关联更新
 update [表1]  a  left join  [表2] b on a.keyId = b.keyId 
       set a.[列名] = '列值' 
    where  ...   ---where条件

mssql sqlserver sql update关键字的四种用法分享


下文通过举例的方式分享update关键字的四种用法,如下所示:
实验环境:sql server 2008 R2


update 关键字常见的更新方式:
1. 单表update
2. 多表关联update

例:
测试对象:
订单表A (keyId primary key,billNo,info,note)
订单表B (keyId primary key,billNo,extendInfo)

-- 1.1 单表update单字段
update A  a set a.info = 'test' where a.keyId = '3';

-- 1.2 单表update多字段
update A a set a.info = 'test', a.note = '备注信息' where a.keyId = '8';

/*
  多表关联update 更新,需使用exists进行存在性判断
  避免无法关联到数据的表,被置为null 
*/
-- 2.1 多表关联update单字段
update B b set b.extendInfo = (select a.info from a a where a.keyId = b.keyId)
where exists(select 1 from stu1 t2 where t2.ID = t.ID);

-- 2.2 多表关联update多字段
update a left join b on a.keyId = b.keyId set a.info = '多表更新',b.extendInfo='多表更新'  
 where a.keyId =8 


同时更新多字段注意事项:
同时对不同表中的字段进行同时更新时,需注意表之间必须存在关联,如上2.2所示