Oracle merge into的用法,以及MySQL的相同功能语句
2017-07-01 17:28
399 查看
今天在重构以前的代码发现一个效率比较低的SQL,插入一条数据的时候先查询,如果不为空,则进行更新操作,如果为空则插入,则插入。
using (select '111' as id,'周文军' as name from dual) b
on (a.id= b.id)
when matched then
update set a.name= b.name
when not matched then
insert (id,name) values(b.id,b.name);
--emp表中有id和name字段,当插入一个id=‘111’,name=‘周文军’的数据时,进行判断
1、如果原表存在id=111的人,则运行update语句。
2、如果表中不存在id=111的人,则运行insert语句。
--解释
将插入的数据放置到b表中,和a表进行匹配,匹配规则Wieusing中的规则,如果匹配成功,则运行uodate,否则运行insert,此写法比先查询再做判断的效率提高很多。
MySQL中存在insert ignore into语句,用法和插入语句相同,但如果表中已存在该记录的主键,则忽略此插入语句。
MySQL中的存在更新否则插入的语句为replace into,语法同insert into,如
replace into emp (id,name) values('111','周文静');
--解释
前提是id为emp的主键
如果存在id=‘111’的记录,则运行更新语句,否则插入。
一,Oracle
merge into emp ausing (select '111' as id,'周文军' as name from dual) b
on (a.id= b.id)
when matched then
update set a.name= b.name
when not matched then
insert (id,name) values(b.id,b.name);
--emp表中有id和name字段,当插入一个id=‘111’,name=‘周文军’的数据时,进行判断
1、如果原表存在id=111的人,则运行update语句。
2、如果表中不存在id=111的人,则运行insert语句。
--解释
将插入的数据放置到b表中,和a表进行匹配,匹配规则Wieusing中的规则,如果匹配成功,则运行uodate,否则运行insert,此写法比先查询再做判断的效率提高很多。
二,mysql
mysql中要求该表存在主键MySQL中存在insert ignore into语句,用法和插入语句相同,但如果表中已存在该记录的主键,则忽略此插入语句。
MySQL中的存在更新否则插入的语句为replace into,语法同insert into,如
replace into emp (id,name) values('111','周文静');
--解释
前提是id为emp的主键
如果存在id=‘111’的记录,则运行更新语句,否则插入。
相关文章推荐
- mysql中sql语句中常见的group_concat()函数意思以及用法,oracle中与其一样的功能函数是wmsys.wm_concat()
- Oracle中的ROWNUM rowid 以及MySQL中实现rownum功能类似的语句
- Oracle merge into用法以及相关例子示例
- Oracle中的ROWNUM rowid 以及MySQL中实现rownum功能类似的语句
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- Oracle 中MERGE语句的用法(转载)
- Oracle Merge Into 的用法详解实例
- oracle merge into 用法详解
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- oracle和mysql功能相同的函数
- Oracle merge into 的用法详解实例
- mysql中insert into和replace into以及insert ignore用法区别[转]
- Oracle:merge into增强功能
- Oracle 中MERGE语句的用法
- oracle merge into 的用法详解+实例
- Oracle Merge Into 的用法详解实例
- oracle merge into 用法详解
- oracle merge into 用法详解
- Oracle Merge Into 的用法详解实例
- oracle和mysql功能相同的函数