飞 的个人资料二月飞雪日志列表留言簿 工具 帮助

日志


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
    )
当然第一种写法有它的其他功效,比如当每个要更新的栏位的对应行不一致时.

评论

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

若要添加评论,请使用您的 Windows Live ID 登录(如果您使用过 Hotmail、Messenger 或 Xbox LIVE,您就拥有 Windows Live ID)。登录


还没有 Windows Live ID 吗?请注册

引用通告

此日志的引用通告 URL 是:
http://wonphy.spaces.live.com/blog/cns!22042D05BB497C1A!311.trak
引用此项的网络日志