merge into 当using后的select结果为空时,不能执行update和insert

原创 2015年11月18日 09:56:41

今天突然发现merge into功能不起作用了,在网上找了半天,发现是merge into的一个固有bug。

无效语句如下:

merge into T_WORK_DRZJ a using (select * from T_WORK_DRZJ b where b.ygbh=22209 and b.rq=20151117)  on (a.ygbh = 22209 and a.rq=20151117) 
when matched then update set a.zjnr='1111111',a.gzqk='今日录入潜在客户1人。',a.shzt=0,a.sfgk=1,a.lsh=seq_work_drzj.nextval  
when not matched then insert values(20151117,22209,'1111111','今日录入潜在客户2人。','','','',0,'','','',1,seq_work_drzj.nextval)

因为

select * from T_WORK_DRZJ b where b.ygbh=22209 and b.rq=20151117
结果是空的,所以不能执行后面的update和insert语句。

经过改进后:

merge into T_WORK_DRZJ a using (select '22209' as ygbh, '20151116' as rq from dual) b  on (a.ygbh = b.ygbh and a.rq=b.rq) 
when matched then update set a.zjnr='1111111',a.gzqk='今日录入潜在客户1人。',a.shzt=0,a.sfgk=1,a.lsh=seq_work_drzj.nextval  
when not matched then insert values(20151116,22209,'1111111','今日录入潜在客户1人。','','','',0,'','','',1,seq_work_drzj.nextval)

问题就解决了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

MERGE Into 无法更新ON子句中引用的列

用merge into在on条件里出现的列,在update语句里则不能/不用再次出现

github个人使用笔记

1.Github有一个主库,每个人自己也有一个库,称为分支。   2.Github的协作流程:先从主库fork出自己的分支,然后进行代码的修改等操作, 操作完之后从本地库上推到自己的服务器分支,...

Java操作POI批量导出多个excle

一、前端JS //站内搜索查询报表-Excel导出 function exportRecord(){ var browseUrl=$("#browseUrl").val(); if(brows...

Merge Into 语句代替Insert/Update在Oracle中的应用实战

动机:想在Oracle中用一条SQL语句直接进行Insert/Update的操作。说明:在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录时,就...
  • yuzhic
  • yuzhic
  • 2007-11-21 19:01
  • 23780

为mysql数据库建立索引

前些时候,一位颇高级的程序员居然问我什么叫做索引,令我感到十分的惊奇,我想这绝不会是沧海一粟,因为有成千上万的开发者(可能大部分是使用MySQL的)都没有受过有关数据库的正规培训,尽管他们都为客户做过...

Oracle中用一个表的数据更新另一个表的数据

转自:http://www.2cto.com/database/201205/130987.html有下面两个表:将表tab1中id值与和表tab2中id值相同的行的val更新为tab2中val的值....

Merge into 详细介绍

/*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配...

保证你现在和未来不失业的十种IT关键技术

保证你现在和未来不失业的十种IT关键技术 刘 聪 于 2005年 01月31日 发表 在当今的IT就业市场,有人欢喜有人忧。有人对目前的工作和薪水很满意,有人目前正面临着下岗,或者已经下岗……可能...
  • a11s
  • a11s
  • 2005-02-19 10:41
  • 967

SpringMVC从Controller跳转到另一个Controller

SpringMVC从Controller跳转到另一个Controller refUrl: http://blog.csdn.net/liupeng_family/article/details/38...
  • jackpk
  • jackpk
  • 2015-03-07 16:44
  • 51329

oracle MERGE INTO...USING两表关联操作(效率高)

数据量小的时候可以使用子查询做两表关联操作;但数据量大的时候子查询效率太低(因为是单条比对) 比如: update person1 p1 set p1.p_name=(select p_name ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)