首页 新闻 会员 周边

update 与inner join 联合用的疑问?

0
悬赏园豆:10 [待解决问题]

表a

用户名字   手机                       地址

小明1                                     地址1

小明 2                                   地址2

-------------------------------------------

表b

用户名字     手机

小明1         135555555

小明2        138000000

 

表a和表b的用户名字是相关联的,表a的手机号为空,现在要把b中的手机号对应更新到a表中.

 

sql:   update 表a set 手机=b.手机 from   表a as a inner join 表b  as b on a.用户名字=b.用户名字,

实际是上可行的,就是不知道原理,update 表a set 手机=b.手机是如何对应上的,如果这样写,可以很好理解

 update  表a as a inner join 表b as b on a.用户名字=b.用户名字 set set a.手机=b.手机,

但是在sql2008上不通过!

< >
分享
所有回答(2)
0

这是MSSQL特有的UPDATE...SET...FROM...WHERE...的语法,实际上就是从源表获取更新数据。
“ update  表a as a inner join 表b as b on a.用户名字=b.用户名字 set set a.手机=b.手机”不符合sql2008的语法,当然无法执行。

只有以下类似方式:

UPDATE b SET b.memo = a.name FROM b LEFT JOIN a ON a.id = b.id

如果需要更新多个字段的话使用:

UPDATE A  SET A1 = B1, A2 = B2, A3 = B3  FROM A LEFT JOIN B ON A.ID = B.ID

或者:

UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A, B WHERE A.ID = B.ID

 

acepro | 园豆:1218 (小虾三级) | 2012-08-13 17:51
1
UPDATE  表a
SET     表a.手机 = 表b.手机
FROM    表a
        INNER JOIN 表b ON 表b.用户名字 = 表a.用户名字

标准的写法

田林九村 | 园豆:2367 (老鸟四级) | 2012-08-23 13:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册