(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中是可以执行的(此语句比较简洁)
如何在一个update语句中,用一个表的数据更新另一个表的数据
最新推荐文章于 2024-08-09 15:01:36 发布