| 飞 的个人资料二月飞雪日志列表留言簿 | 帮助 |
|
6月7日 从另一个表批量更新一个表的多个栏位情形:从Table B更新Table A中对应行的多个栏位,我已知的一种写法如下:
update A x
set x.v1 = (select y.v1 from B y where y.id = x.id),
x.v2 = (select y.v2 from B y where y.id = x.id),
x.v3 = (select y.v3 from B y where y.id = x.id),
... ...
这种写法,不但繁琐,而且执行效率比较低,今天得知另外一种写法,简洁而且高效:
update A x
set (x.v1, x.v2, x.v3) = (select y1.v1, y1.v2, y1.v3 from B y1 where y1.id = x.id)
where exists (
select 1 from B y2 where y2.id = x.id
)
当然第一种写法有它的其他功效,比如当每个要更新的栏位的对应行不一致时. 引用通告此日志的引用通告 URL 是: http://wonphy.spaces.live.com/blog/cns!22042D05BB497C1A!311.trak 引用此项的网络日志
|
|
|