楼主: zhrmghg

[精华] 一个UPDATE语句,请教SQL编写高手

[复制链接]
论坛徽章:
7
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:342008新春纪念徽章
日期:2008-02-13 12:43:03奥运会纪念徽章:羽毛球
日期:2008-05-28 20:12:222009新春纪念徽章
日期:2009-01-04 14:52:282010新春纪念徽章
日期:2010-03-01 11:06:12
31#
发表于 2003-10-30 15:29 | 只看该作者
最初由 子弹 发布
[B]SQL> update b set b.col3=(select col3 from a where a.col1=b.col1 and a.col2=b.co
l2);

[/B]


你恰好记录都匹配,如果你的记录不匹配,则会把NULL值UPDATE到不匹配的B表的COL3中,如果你的B表的COL3字段不允许空,那肯定就错!!!

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
32#
发表于 2003-10-30 16:07 | 只看该作者
不好意思,问一下,数据匹配是啥意思?

使用道具 举报

回复
论坛徽章:
7
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:342008新春纪念徽章
日期:2008-02-13 12:43:03奥运会纪念徽章:羽毛球
日期:2008-05-28 20:12:222009新春纪念徽章
日期:2009-01-04 14:52:282010新春纪念徽章
日期:2010-03-01 11:06:12
33#
发表于 2003-10-30 16:18 | 只看该作者
就是根据你的条件 a.col1=b.col1 and a.col2=b.co
l2 找得到的记录.

使用道具 举报

回复
论坛徽章:
0
34#
发表于 2003-11-1 20:54 | 只看该作者
精彩,上次我也遇到这个问题,看见别人使用procedure做的,暴不爽,想改由改不了,原来子查询里面不用再写表B,这是关键啊。不知有没有高手能够从更深层次讲解。

使用道具 举报

回复
论坛徽章:
0
35#
发表于 2004-4-28 16:15 | 只看该作者
merge 可以吗?

使用道具 举报

回复
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
36#
发表于 2004-4-28 23:07 | 只看该作者
update (select a.col1,a.col2,a.col3,b.col3 u_col3 from tab1 a,tab2 b where a.col1=a.col1 and a.col2=b.col2) set col3=u_col3

使用道具 举报

回复
论坛徽章:
0
37#
发表于 2004-8-13 11:22 | 只看该作者
update b
   set b.col3 = (select a.col3 from a where a.col1 = b.col1 and a.col2 = b.col2)         
where exists (select 1
                 from a
                where a.col1 = b.col1 and a.col2 = b.col2)

使用道具 举报

回复
论坛徽章:
0
38#
发表于 2004-8-14 15:28 | 只看该作者
update inventory a
       set a.invb =
                          (select b.cardloc
                                  from spbasic b
                                  where b.spcode=a.ipro_id)

使用道具 举报

回复
论坛徽章:
0
39#
发表于 2004-8-16 10:55 | 只看该作者
UPDATE TEST2 b
SET b.ITYPE = (SELECT DISTINCT a.ITYPE FROM TEST1 a
WHERE b.B = a.A AND b.BV = a.AV)

使用道具 举报

回复
论坛徽章:
7
数据库板块每日发贴之星
日期:2005-05-23 01:01:21授权会员
日期:2005-10-30 17:05:332009新春纪念徽章
日期:2009-01-04 14:52:282010新春纪念徽章
日期:2010-03-01 11:20:002011新春纪念徽章
日期:2011-02-18 11:43:332012新春纪念徽章
日期:2012-01-04 11:49:54
40#
发表于 2005-5-22 15:34 | 只看该作者
我這裡有一個例子可以幫你。
update part1 a set (a.dose,a.totaldose)=
  (select b.dose,b.totaldose from part2 b where a.partno=b.partno)
where exists(select b.partno from part2 b where a.partno=b.partno);

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表