我个人觉得写的很好

http://blog.csdn.net/wanglilin/article/details/7200201

需求:

将t2(t_statbuf)表中id和t1(T_Mt)表相同的记录更新进t1表。

1.错误的写法:

1 update table_name t1 set (a,b,c)=( select a,b,c from table_name_2 t2 where t1.a=t2.a);

这种写法,会更新t1表中的所有行:如果t1.a=t2.a的,就更新t2中查出的记录进t1;如果t1.a<>t2.a的,t1中的记录会被更新成空(null)。

正确的写法:

1 update table_name t1 set (a,b,c)=( select a,b,c from table_name_2 t2 where t1.a=t2.a)
2 where exists(select 1 from table_name_2 t2 where t1.a=t2.a);  

解析:

正确的写法,就是在后面加了一句 where exists(select 1 from table_name_2 t2 where t1.a=t2.a);

这句话的意思是:如果存在t1.a=t2.a,就更新,否则,不更新,所以不会导致t1表中所有的记录都被更新。

例:

update table_name_1 set (a,b) = (select 1,2 from dual where 1=2);

这个结果会把table_name_1中的记录全部更新成空(null),因为后面1=2不成立。

总结:

update时,要弄清限定条件,要测试!

我的测试语句:

1 update my_time_test1 t1 set (MDATE,DISCRIPT) =(select MDATE,DISCRIPT from
2 my_time_test t2 where t1.DISCRIPT=t2.DISCRIPT) where exists (select 1 from
3 my_time_test t2 where t1.DISCRIPT=t2.DISCRIPT);  

我的业务语句:

1 update T_Mt t1 set (Stat,OStat,RptTime) =(
2 select Stat,Stat,RptTime from t_statbuf t2 where t1.MsgId=t2.MsgId) where exists(
3 select 1 from t_statbuf t2 where t1.MsgId=t2.MsgId);  --如果存在t1和t2相等的,就更新。不加where exists,是不管存不存在,都更新,不存在的,结果会被更新成空,但是那条记录还在  

转载于:https://www.cnblogs.com/remember-forget/p/8970720.html

oracle批量update相关推荐

  1. oracle批量update数据_东方国信大数据面试真题

    东方国信 学长1 Hadoop工程师笔试题(金融事业部) 1)技术基础题(共十题,每题5分) (1)列举在Linux系统下可以在看系统各项性能的工具(区分CPU.内存.硬盘.网络等) (2)HDFS写 ...

  2. Oracle 批量update语句,Oracle之update语句优化研究 批量更新

    update (select YP.DEALLOCATE_BUDGET_, YP.REMAIN_BUDGET_ from MP_YEAR_PLAN YP where YP.YEAR_PLAN_ID_ ...

  3. oracle批量update 转

    需求: 将t2(t_statbuf)表中id和t1(T_Mt)表相同的记录更新进t1表. 1.错误的写法: 1 update table_name t1 set (a,b,c)=( select a, ...

  4. oracle 批量插入 mysql 区别,Oracle 和 mysql 的批量操作Sql语句 的区别

    正确的oracle批量新增的sql是: 方法 1: insert into ATTRACTIONS ( ID, NAME, LONGITUDE, LATITUDE,  UPDATE_TIME ) (s ...

  5. oracle批量查询更新,Oracle批量查询、删除、更新使用BULK COLLECT提高效率

    BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_integer用法笔记. 例1: 批量查询项目资金账户号为 & ...

  6. oracle中nowait怎么用,oracle中UPDATE nowait 的使用方法介绍

    oracle中UPDATE nowait 的使用方法介绍 1.UPDATE nowait 应用以下场景:查询某条数据,并对其开启数据库事务.如果查询的当前数据没有加锁,则正确返回结果,并对当前数据加锁 ...

  7. oracle批量将id更新为uuid,oracle批量新增更新数据

    本博客介绍一下Oracle批量新增数据和更新数据的sql写法,业务场景是这样的,往一张关联表里批量新增更新数据,然后,下面介绍一下批量新增和更新的写法: 批量新增数据 对于批量新增数据,介绍两种方法 ...

  8. mybatis mysql 批量更新_mysql批量update更新,mybatis中批量更新操作

    在日常开发中,有时候会遇到批量更新操作,这时候最普通的写法就是循环遍历,然后一条一条地进行update操作.但是不管是在服务端进行遍历,还是在sql代码中进行遍历,都很耗费资源,而且性能比较差,容易造 ...

  9. 批量update sql

    批量更新sql |批量update sql 2008年05月21日 星期三 16:36 批量更新表时,update一个表的列时,需要依赖另外的表,这种依赖可以是where条件子句,也可以要update ...

最新文章

  1. unicode编码过php的magic_quotes_gpc设置为on的mysql注入与文件写入(待测试)
  2. 小东《迷路的情人》MV
  3. 【ArcGIS风暴】实验:公路建设成本的计算
  4. PPG血氧饱和度计算
  5. 怎么把计算机模式重置,电脑怎么还原出厂模式
  6. 解决IE6中 PNG图片透明的终极方案-八种方案!
  7. as3通用三方库大全
  8. 如何把linux生成镜像,如何把当前ubuntu系统做成镜像
  9. mysql特效_Cocos2d-x学习笔记(16)(常见22种特效)
  10. 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
  11. NGN学习笔记9——网络演进与融合
  12. 免费好用的英语单词统计软件(带翻译功能)
  13. 基于强化空间注意力的视网膜网络(ESA-Unet)
  14. maptalks+three.js+vue webpack项目实现二维地图上贴三维模型
  15. python web py入门(12)- 实现用户登录论坛
  16. python程序设计基础之turtle库制作简单的小图片
  17. 彻底缓存与协商缓存(浏览器缓存)
  18. 如何做一个炫酷的动画网站-css实现图片上下浮动效果
  19. linux team方式进行网卡绑定
  20. 景安服务器怎么重装系统,怎么全盘重装系统|全盘重装系统步骤

热门文章

  1. 计算机win7内容已满,Win7旗舰版电脑C盘满了怎么清理
  2. 钉钉机器人关键词应答_除了用于电销,智能语音机器人可以应用哪些地方?
  3. html 显示不吃,20180902_html_第二次_张旺
  4. 【python+selenium自动化】使用pytest+allure2完成自动化测试报告的输出
  5. 洛谷——P1067 多项式输出
  6. 初学者最常问的几个问题
  7. 【转】成为Java顶尖程序员 ,看这10本书就够了
  8. redis 学习笔记(1)-编译、启动、停止
  9. Linux与Windows中动态链接库的分析与对比
  10. 简单的绑定数据截取时间字符年月日