美文网首页oracle语法
merge into 匹配查询、插入

merge into 匹配查询、插入

作者: 喜欢小星星_ | 来源:发表于2018-08-16 22:02 被阅读0次

merge语法是根据源表对目标表进行匹配查询,匹配成功时更新,不成功时插入。
其基本语法规则是:
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not macthed then insert into a(字段1,字段2……)values(值1,值2……)

变种写法①,只更新:
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段,a.更新字段2=b.字段2……

变种写法②,只插入:
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when not macthed then insert into a(字段1,字段2……)values(值1,值2……)
注:条件字段不可更新

对于Oracle来说,merge是9i新增的语法,在10g进行了一些增强,如下:

①条件操作:

merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段 where 限制条件
when not macthed then insert into a(字段1,字段2……)values(值1,值2……) where 限制条件

举例:

merge into test_merge a
using test b
on(a.no=b.no)
when matched then update set a.no2=b.no2 where a.no<>1
when not matched then insert values(b.no,b.no2) where a.no<>100

当然也支持变种①②的写法

②删除操作
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
delete where b.字段=xxx

举例:

merge into test_merge a
using test b
on(a.no=b.no)
when matched then update set a.no2=b.no2 where a.no<>1
delete
where b.no=14

备注:删除动作针对的也是目标表,并且必须在语句最后

基本上merge的用法就是以上这些,建议平常可以多用,比单独的update+insert的方式效率要更高,尤其是on条件下有唯一索引的时候,效率更高

相关文章

  • merge into 匹配查询、插入

    merge语法是根据源表对目标表进行匹配查询,匹配成功时更新,不成功时插入。其基本语法规则是:merge into...

  • merge into using 详解

    1、merge into 语句 MERGE 是 Oracle9i 新增的语法,根据源表对目标表进行匹配查询,匹配成...

  • T-SQL 之 MERGE INTO(2)

    官网地址:使用 MERGE 插入、更新和删除数据 使用 MERGE 语句执行以下操作: 有条件地在目标表中插入或更...

  • Oracle-merge算法示例

    当对两个表(某个字段有相同的值,也就是匹配的列)进行比较更新/插入时,可以使用merge算法,逻辑为: 使用tes...

  • 【Android】GreenDao增删改查(三)

    (1)插入 常用API 插入 (2)查询 Dao查询常用方法 Dao查询 QueryBuilder查询常用方法 返...

  • arango增删改查

    arango实践 插入数据 修改数据 插入数据 查询数据 复杂查询 多表查询

  • python——mysql数据库基础

    通过终端如何进入/退出mysql 创建表 数据操作 查询: 消除重复 where 逐个匹配每一行 增加:全列插入 ...

  • elasticsearch高级查询

    elasticsearch7.8.0高级查询 数据准备 查询所有 匹配查询 字段匹配查询 分词查找 关键字精确查询...

  • arango的AQL

    arango实践 插入数据模板 修改数据模板 插入数据 查询数据 复杂查询 多表查询 图查询

  • Elasticsearch 深入搜索-全文搜索

    基于词项和基于全文 匹配查询 匹配查询 match 是个 核心 查询。无论需要查询什么字段, match 查询都应...

网友评论

    本文标题:merge into 匹配查询、插入

    本文链接:https://www.haomeiwen.com/subject/gpkabftx.html