有如下两个表
表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.用户名字