在sql server中,update可以根据一个表的信息去更新另一个表的信息。
首先看一下语法:
update A SET 字段1=B表字段表达式,
字段2=B表字段表达式 from B WHERE 逻辑表达式
下面看例子,前两天遇到这样一种情况:是表联合更新数据。
具体情况是这样的。有两个表,一个表是HotelInfo,一个是WorkeOrder,现在WorkeOrder表中缺少电话,需要根据HotelId来获取HotelTel,然后把电话给更新一下。
解决步骤:
1.先用表联合查询,把两个表关联起来。
select * from WorkOrder , HotelInfo where WorkOrder.HotelId=HotelInfo.HotelCode
2.在把 select改成update,此时我们会发现这样是有问题的,但是又不想用子查询,所以就想到了如下办法。
update WorkOrder set WorkOrder.HotelTel= HotelInfo.HotelTel from HotelInfo where WorkOrder.HotelId=HotelInfo.HotelCode
3.当然也可以用子查询,但是不如联合查询好。
update WorkOrder set HotelTel=(select HotelTel from HotelInfo where WorkOrder.hotelId=HotelInfo.hotelId )