oracle 之 merge into 函数--简译
来源:互联网 发布:php mvc 开发实战 编辑:程序博客网 时间:2024/06/08 17:24
merge into 函数 oracle 数据库独有的函数,在9i版本以后添加的。具体历史和支持版本请百度。
merge into 函数 主要实现有则更新无则插入。
一般格式如下
merge into t_info_archives[表名] table1 [源表]
using (v_info_archives[视图/表名/] ) view1 [条件应用表]
on(view1.age > 18)[条件]
when matched then[符号条件]
update set table1.AdultSign = '1'[所执行的语句]
when not matched then [不符合条件]
update set table1.AdultSign ='0' [所执行的语句];
个人理解 merge into 是类似与If 语句 的分支,只不过功能比较强大,适合做数据的批量变更,由于是官方函数,执行速度也是非常理想的。
重点:有则更新无则插入
merger into 需要修改的表名 t1
using (select count(1) as num from 需要修改的表名 where 条件 ) t2
on (t2.num > 0) --判断是否有符合条件的数据
when matched then
update set 要修改的数据 where 条件 --要记住,这里要加条件否则的话,将是将全变进行修改
when not matched then
insert (表字段) values(要插入的值)
直接上deom
表 t_info_archives
name | age | adultsign
张三 | 21 | NULL
李四 | 18 | NULL
王五 | 17 | NULL
sql <
MERGE INTO t_info_archives t1
USING (SELECT COUNT(1) AS NUM FROM t_info_archives WHERE age < 18 ) t2
ON (t2.num > 0)
WHEN MATCHED THEN
UPDATE SET t1.adultsign = 1 WHERE age < 18
WHEN NOT MATCHED THEN
INSERT (NAME , age , adultsign) VALUES ('马六' , '16', '1');
结果
name | age | adultsign
张三 | 21 | NULL
李四 | 18 | NULL
王五 | 17 | 1
sql语句的逻辑为:判断表中是否有小于18岁的,有则将其成年标志位置1
修改 sql 年龄将 18改为17 ,表中没有符合的,执行语句。
结果
name | age | adultsign
张三 | 21 | NULL
李四 | 18 | NULL
王五 | 17 | 1
马六 | 16 | 1有则更新,无则插入 就是上面这样的。
这个merge into 可以有多种变形 ,主要看的你要判断 什么, 符合执行什么,不符合执行 什么。
扔个彩蛋。关于 pro*c 编译 merge into 报错 的处理方式。可以放弃EXEC SQL 这样的形式,采用动态sql 形式 执行。
- oracle 之 merge into 函数--简译
- Oracle 之 MERGE INTO
- Oracle存储过程之merge into 函数(一)
- Oracle存储过程之merge into 函数(二)
- oracle 之 merge into 的用法
- Oracle-----Update语句优化之merge into
- Oracle Database之MERGE INTO详细介绍
- Oracle select --merge into:
- oracle merge into 测试
- oracle merge into
- oracle merge into 实例
- Oracle:merge into
- Oracle数据库merge into
- oracle merge into
- oracle merge into
- oracle merge into用法
- merge into(oracle)
- ORACLE MERGE INTO
- Android---RecyclerView简单实用(上)
- 8.25-8.29假期
- Ubuntu 16.04搭建git服务器
- linux系统启动过程
- Python读写OneNET平台数据
- oracle 之 merge into 函数--简译
- MathJax使用LaTeX语法编写数学公式
- Mysql与Oracle区别
- 1024:求1+2!+3!+...+N!的和
- RxJava笔记1
- Windows 下 MongoDB的安装,配置,删除以及RoboMongo(Robo 3T)的安装和使用教程
- 矩阵快速幂比较好的写法
- 超轻量/跨平台UI框架(目前已经支持: Windows, Android, Linux, VR)
- Android的五种数据存储方式