TAB_A
id contact_name contact_time
1 张三 2008-11-02
1 李四 2008-12-02
2 赵五 2008-07-02
2 郑七 2008-08-02
3 周九 2008-09-02
5 王一 2008-06-02TAB_B
id contact_name contact_time
1 韩一 2007-01-02
1 苏三 2007-02-02
2 孙三 2007-11-02
4 钱二 2007-12-01TAB_C
id contact_name
1
2
3
4
5
希望TAB_C被update成如下状况
TAB_C
id contact_name
1 张三
2 郑七
3 周九
4 钱二
5 王一
即取A、B表对应id的最后(即contact_time最接近当前时间)一次联系人。
用UPDATE语句能实现吗?
id contact_name contact_time
1 张三 2008-11-02
1 李四 2008-12-02
2 赵五 2008-07-02
2 郑七 2008-08-02
3 周九 2008-09-02
5 王一 2008-06-02TAB_B
id contact_name contact_time
1 韩一 2007-01-02
1 苏三 2007-02-02
2 孙三 2007-11-02
4 钱二 2007-12-01TAB_C
id contact_name
1
2
3
4
5
希望TAB_C被update成如下状况
TAB_C
id contact_name
1 张三
2 郑七
3 周九
4 钱二
5 王一
即取A、B表对应id的最后(即contact_time最接近当前时间)一次联系人。
用UPDATE语句能实现吗?
update TAB_C
SET TAB_C.contact_name=(SELECT contact_name FROM ( SELECT ROW_NUMBER(PARTITION BY ID ORDER BY contact_time DESC) RN
,T1.* FROM ((SELECT * FROM TAB_A ) UNION ALL (SELECT * FROM TAB_B) ) T1)
WHERE RN=1 AND T1.ID=TAB_C.ID)
如果你的TAB_C 中原本就有数据,到是可以考虑采用meger into的办法!楼主不妨到GOOGLE上搜搜看~