oracle批量update
我个人觉得写的很好
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,是不管存不存在,都更新,不存在的,结果会被更新成空,但是那条记录还在
oracle批量update的更多相关文章
- oracle批量update 转
需求: 将t2(t_statbuf)表中id和t1(T_Mt)表相同的记录更新进t1表. 1.错误的写法: update table_name t1 set (a,b,c)=( select a,b, ...
- oracle 批量更新之update case when then
oracle 批量更新之update case when then CreationTime--2018年8月7日15点51分 Author:Marydon 1.情景描述 根据表中同一字段不同情况 ...
- MyBatis魔法堂:各数据库的批量Update操作
一.前言 MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了.本篇仅记录批量update操作的sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了. ...
- Oracle 批量增加 / 批量跟新
在使用oracl过程中踩到好多坑,在此记录,也分享给大家. 第一:批量插入 代码一(在为明确表和字段的情况下,动态批量增加): @Insert("<script> " ...
- oracle批量更新之使用游标进行分批次更新的5种方式及速度比对
1.情景展示 一共有22w条数据, 需要将A表的主键更新至B表的指定字段,如何快速完成更新? 2.解决方案 声明: 解决方案不只一种,该文章只介绍快速游标法及代码实现: 两张表的ID和ID_CAR ...
- oracle 批量更新表字段
(一) 将数字替换成汉字 第一步,去重查询 使用distinct关键字先对该字段值进行去重查询,看共有几种情况 --查询指定区间内表停诊字段的值 SELECT DISTINCT T.CLOSE_T ...
- oracle 批量更新之将一个表的数据批量更新至另一个表
oracle 批量更新之将一个表的数据批量更新至另一个表 CreationTime--2018年7月3日17点38分 Author:Marydon Oracle 将一个表的指定字段的值更新至另一个 ...
- oracle批量新增更新数据
本博客介绍一下Oracle批量新增数据和更新数据的sql写法,业务场景是这样的,往一张关联表里批量新增更新数据,然后,下面介绍一下批量新增和更新的写法: 批量新增数据 对于批量新增数据,介绍两种方法 ...
- mysql实战之 批量update
mysql实战之批量update 现阶段我们的业务量很小,要对admin_user表中的relationship字段进行更新,指定id是409.已知409是公司内的一服务中心,需要把该服务中心放到区代 ...
随机推荐
- Task WaitAll的用法
var tasklst = new List<Task>(); ; i < urls.Count; i++) { tasklst.Add(Task.Factory.StartNew& ...
- Django中使用haystack进行全文检索时需要注意的坑
对于haystack的配置什么的我在这里就不必说什么了,毕竟一搜一大把. 直接说重点 1 当你通过继承haystack的views来自定义django 应用的views 时,你要注意heystack ...
- 王兴内部讲话:为什么中国To B企业都活得这么惨
本文节选自美团创始人王兴内部讲话.在讲话中,王兴罕见地分享了他对全球和中国宏观经济的理解,谈了他对 TO B 业务的深度思考.全文近 15000 字,干货非常多,值得你花时间阅读. 我们今天讲一下餐饮 ...
- 安装Spring+搭建Spring开发环境
https://blog.csdn.net/csdnsjg/article/details/80152815 https://jingyan.baidu.com/article/219f4bf798e ...
- 区分SQL Server关联查询之inner join,left join, right join, full outer join并图解
1.from A inner join B on A.ID=B.ID :两表都有的记录才列出 A表: ID Name B表: ID Clas ...
- 打败 IE 的葵花宝典:CSS Bug Table
博主说:本博客文章来源包括转载,翻译,原创,且在文章内均有标明.鼓励原创,支持创作共享,请勿用于商业用途,转载请注明文章链接.本文链接:http://www.kein.pw/?p=35 原文发表于:A ...
- 关于scut在unity上的主动推送
自带的samples里面,chat的例子涉及主动推送,可作为参考. 在unity里面接收主动推送用Net.CommonCallback 服务端最近的新版本更改了接口,有两种方法推送: ActionFa ...
- DDR 复位
将FPGA代码和实际的数字电路对应起来. always @ (negedge clk_ref_200) begin if(ddr3_init_done) 'b10) 'b10 ...
- flink checkpoint 源码分析 (二)
转发请注明原创地址http://www.cnblogs.com/dongxiao-yang/p/8260370.html flink checkpoint 源码分析 (一)一文主要讲述了在JobMan ...
- python学习之getdefaultlocale()函数
def getdefaultlocale(envvars=('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE')) 返回一个二元组. >>> local ...