如何在一个update语句中,用一个表的数据更新另一个表的数据

 (1)如何在一个update语句中,用一个表的数据更新另一个表的数据
update aa
set aa.ac=
(select top 1 dd from cc where cc.aa=aa.aa)
  该语句更新了aa 表中的每一行,具体的执行过程是
遍历aa表的每一行,然后根据条件:select top 1 dd from cc where cc.aa=aa.aa
把cc表中对应的行的列dd赋值给aa表的列ac
(注意:不论cc.aa=(<>)aa.aa,aa表的每列都会更新)
  (2)update aa
set aa.ac=
(select top 1 dd from cc where cc.aa=aa.aa)
where
exists(select * from cc where cc.aa=aa.aa)
该语句更新了aa 表中的满足条件:exists(select * from cc where cc.aa=aa.aa)的
所有行
update aa
set aa.ac=
(select top 1 dd from cc where cc.aa=aa.aa)
where
aa.aa in(select aa from cc where aa.aa=cc.aa)
该语句等价于上面的语句(2)
  (3)update (select aa.ac ac,cc.dd dd from aa,cc where aa.aa=cc.aa)
set ac=dd
  该语句也能实现同样的功能,但是似乎sql server 2005 并不支持此种格式,但是在oracle中是可以执行的(此语句比较简洁)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值