一迷茫小青年请教update时的数据同步问题...

[复制链接]
查看11 | 回复5 | 2006-3-28 11:51:00 | 显示全部楼层 |阅读模式
例如现在有 aaa ,bbb 2个表
table aaa
ab
1a1
2b1
3c1
4d1
5e1
table bbb
ab
1null
2null
5null
期望结果是把aaa内的b字段内的数据根据aaa的a对应到bbb.a的直,然后把对应后的结果导入到bbb表的b字段内..
期望结果:
table bbb
ab
1a1
2b1
5e1
各位大虾,有什么方法吗。.mysql和orcale里可以用
update aaa,bbb set bbb.b=aaa.b where aaa.id=bbb.id
但sql里行不通..,
mysql里可以用
update (select a.a aa,a.b ab,b.a ba,b.b bb from aaa a,bbb b where a.a = b.a ) set bb=ab
也不行..,sqlserver里有什么其他办法吗。.
实在不行只能写程序完成匹配了。..救命啊。,数据量太大了。.
回复

使用道具 举报

千问 | 2006-3-28 11:51:00 | 显示全部楼层
UPDATE bbb SET bbb.b=ISNULL((SELECT aaa.b FROM aaa WHERE aaa.a=bbb.a),bbb.b)
回复

使用道具 举报

千问 | 2006-3-28 11:51:00 | 显示全部楼层
或者
UPDATE bbb SET bbb.b=(SELECT aaa.b FROM aaa WHERE aaa.a=bbb.a) WHERE EXISTS(SELECT * FROM aaa WHERE aaa.a=bbb.a)
回复

使用道具 举报

千问 | 2006-3-28 11:51:00 | 显示全部楼层
update bbb set b=aaa.b
from bbb,aaa
where bbb.a=aaa.a
就可以了
Update也支持各类连接
回复

使用道具 举报

千问 | 2006-3-28 11:51:00 | 显示全部楼层
最初由 北冥 发布
[B]update bbb set b=a.b
from bbb,aaa
where bbb.a=aaa.a
就可以了
Update也支持各类连接 [/B]

对,有这种写法,不过应该是 set b=aaa.b
楼上应该是手误
回复

使用道具 举报

千问 | 2006-3-28 11:51:00 | 显示全部楼层
en ,可以用了,我以前不知道set后面还能跟from,走了好多弯路,看来还是需要加深对SQL语句的认识了,谢谢大家的回复!!thanks!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行