需求:

将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,是不管存不存在,都更新,不存在的,结果会被更新成空,但是那条记录还在  

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

    我个人觉得写的很好 http://blog.csdn.net/wanglilin/article/details/7200201 需求: 将t2(t_statbuf)表中id和t1(T_Mt)表相同的 ...

  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. Real World Haskell 第七章 I/O
  2. 在sublime-text中设置浏览器预览
  3. 为什么不能在子类的初始化列表里初始化父类的成员
  4. 【转】3.2(译)构建Async同步基元,Part 2 AsyncAutoResetEvent
  5. 项目实战Git团队操作_图形化版本
  6. birt脚本for循环语句_python循环语句(while amp; for)
  7. it行业里 有哪些职位 职业寿命 比较长_计算机行业范围广泛,这5个高薪IT专业,月薪过万,女生也适合...
  8. python文件命名 数字,当文件存在时,文件名中的数字递增
  9. thinkphp 3.2.2 图片上传gif类型生成缩略图错误
  10. 坐标系ICRS与ITRS相互转换,时间系统及转换
  11. 【精美前端模板】你还不心动吗?
  12. SQL面试练习题一(基础)
  13. 电商实时交易风控系统
  14. 中止执行后超过2年_在法院中止执行后怎么办
  15. Facebook将对视频进行人物识别及身份标注
  16. 标签打印软件如何设置打印区域
  17. java模拟HTTP请求(集合了网上搜来的各种)
  18. sqlserver linux版本查询,sqlserver 各版本信息
  19. STM32CUBEIDE(11)----输出PWM及修改PWM频率与占空比
  20. 那些好用的网站推荐(五)----资料检索网站篇

热门文章

  1. aix 查看防火墙状态_aix防火墙怎么样设置
  2. 1个ieee1394端口_5G新在哪儿(6)?-天线端口的故事
  3. token会被截取吗_做抖音搬运其他网站视频可以吗?
  4. bcb quickrep保存为 图片_不容错过的SCI图片处理和组图方法
  5. element-ui 组件库 el-form 实现
  6. java开发app的缺点_App原生开发的优缺点有哪些
  7. python到底是啥_Python语言中的__init__到底是干什么的?
  8. 20200705:力扣196周周赛上
  9. 20190905:(leetcode习题)爬楼梯
  10. java复制文件的命名_java-复制文件时在文件名扩展名前附加“复...