当前位置: 代码迷 >> Sql Server >> update inner join 中如查使用WHERE?该如何处理
  详细解决方案

update inner join 中如查使用WHERE?该如何处理

热度:40   发布时间:2016-04-24 09:22:01.0
update inner join 中如查使用WHERE??
本帖最后由 zuoguangxin18 于 2015-03-05 08:45:07 编辑
有如下两个表
表a
用户名字   手机                       地址
小明1                                     地址1
小明 2                                   地址2
-------------------------------------------
表b
id  用户名字     手机          时间
1  小明1         135555555   2014-5-2 12:25:26
2  小明2        138000000  2014-5-2 13:25:26
3  小明2        138000001  2014-5-2 18:25:28

表a和表b的用户名字是相关联的,表a的手机号为空,现在要把b中的手机号对应更新到a表中.
 
sql:   update 表a set 手机=b.手机 from   表a as a inner join 表b  as b on a.用户名字=b.用户名字,
上面会关联  小明2   , 138000000,如何关联出小明2   ,  138000001?
------解决思路----------------------
--SQL2005的一种方法
UPDATE T1
SET T1.手机=T3.手机
FROM 表a T1
CROSS APPLY
(SELECT TOP 1 手机 FROM 表b T2
WHERE T1.用户名字=T2.用户名字
ORDER BY T2.时间 DESC)T3

--以下兼容SQL2000
UPDATE T1
SET T1.手机=T4.手机
FROM 表a T1
INNER JOIN(SELECT 用户名字,手机 FROM 表b T2 WHERE NOT EXISTS(SELECT 1 FROM 表b T3 WHERE T2.用户名字=T3.用户名字 AND T2.时间<T3.时间))T4
ON T1.用户名字=T4.用户名字
  相关解决方案