12
返回列表 发新帖
楼主: wuyz124

两个SQL的区别?

[复制链接]
论坛徽章:
33
ITPUB元老
日期:2009-03-11 15:35:03咸鸭蛋
日期:2011-11-06 22:20:25紫蛋头
日期:2011-12-27 22:15:052012新春纪念徽章
日期:2012-01-04 11:49:542014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11红宝石
日期:2014-06-03 13:13:19
11#
发表于 2008-4-13 11:41 | 只看该作者
原帖由 ZALBB 于 2008-4-12 11:57 发表


有区别,

第1条语句,只修改tmp_ours表中符合条件:tmp_ours.servnumber=tmp_kaifas.servnumber 的纪录.
而第2条语句,修改整个tmp_ours表.

比方:tmp_ours表有400万条纪录,符合tmp_ours.servnumber=tmp_kaifas.servnumber条件的只有3条,
那第1条语句只修改3条数据,而第2条则每次都修改400万条.显然,两语句的效率不可同日而语.


此外:第1条语句执行后,被修改的3条纪录的subsid=b.servnumber,除此之外,别的纪录没变.
而第2条语句,除了被修改的3条纪录的subsid=b.servnumber外,别的纪录的subsid=NULL.

因为关联时,没有匹配的纪录,只能返回空值.


总结这类UPDATE语句:

update tmp_ours a
  2  set a.subsid=(select b.servnumber from tmp_kaifas  b  where a.servnumber=b.servnumber)
  3  where   exists
  4  ( select 1  from   tmp_kaifas  b where  a.servnumber=b.servnumber );

1  外围的where   exists约束条件 ,表达的是主表tmp_ours 要修改的纪录.
2  里面的 where a.servnumber=b.servnumber,则说明如何找到匹配的纪录,来返回数值给被修改的字段a.subsid.



使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
25
生肖徽章2007版:龙
日期:2008-05-06 11:07:48咸鸭蛋
日期:2011-10-19 10:09:12ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:24
12#
发表于 2008-4-13 11:43 | 只看该作者
原帖由 ZALBB 于 2008-4-12 11:57 发表


有区别,

第1条语句,只修改tmp_ours表中符合条件:tmp_ours.servnumber=tmp_kaifas.servnumber 的纪录.
而第2条语句,修改整个tmp_ours表.

比方:tmp_ours表有400万条纪录,符合tmp_ours.servnumber=tmp_kaifas.servnumber条件的只有3条,
那第1条语句只修改3条数据,而第2条则每次都修改400万条.显然,两语句的效率不可同日而语.


此外:第1条语句执行后,被修改的3条纪录的subsid=b.servnumber,除此之外,别的纪录没变.
而第2条语句,除了被修改的3条纪录的subsid=b.servnumber外,别的纪录的subsid=NULL.

因为关联时,没有匹配的纪录,只能返回空值.


总结这类UPDATE语句:

update tmp_ours a
  2  set a.subsid=(select b.servnumber from tmp_kaifas  b  where a.servnumber=b.servnumber)
  3  where   exists
  4  ( select 1  from   tmp_kaifas  b where  a.servnumber=b.servnumber );

1  外围的where   exists约束条件 ,表达的是主表tmp_ours 要修改的纪录.
2  里面的 where a.servnumber=b.servnumber,则说明如何找到匹配的纪录,来返回数值给被修改的字段a.subsid.

老妖说的很对。
如果条件特殊,你执行这两个语句,结果是不同的。

使用道具 举报

回复

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

本版积分规则 发表回复

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