当前位置: 首页 > news >正文

青海媒体网站建设公司军事新闻国际军事新闻

青海媒体网站建设公司,军事新闻国际军事新闻,建设银行网站关闭闪付,荆州哪里做网站文章目录 merge into使用场景merge into语法测试表普通模式 merge使用注意点 merge into MERGE 是 Oracle9i 新增的语法,根据源表对目标表进行匹配查询,匹配成功时更新,不成功时插入 比单独的 update insert 的方式效率要更高,尤…

文章目录

  • merge into
  • 使用场景
  • merge into语法
  • 测试表
    • 普通模式
  • merge使用注意点

merge into

MERGE 是 Oracle9i 新增的语法,根据源表对目标表进行匹配查询,匹配成功时更新,不成功时插入
比单独的 update + insert 的方式效率要更高,尤其是on条件下有唯一索引的时候,效率更高。

使用场景

在写数据同步的脚本时,常常会遇到这样的需求:存在时更新,不存在时插入

merge into语法

MERGE INTO [target-table] T  --目标表 可以用别名
USING [source-table] S  --数据源表 可以是表、视图、子查询
ON([conditional expression] )  --关联条件
WHEN MATCHED THEN --当关联条件成立时 更新、删除,插入的where部分为可选 
UPDATE [target-table] SET T.column = S.column WHERE 限制条件
DELETE [target-table] WHERE 限制条件
WHEN NOT MATCHED THEN --当关联条件不成立时   
INSERT (column,...) VALUES('',...)

判断源表 S 和目标表 T 是否满足 ON 中的条件,如果满足则用 S 表去更新 T 表,如果不满足,则将 S 表数据插入 T 表中。但是有很多可选项,如下:

  • 普通模式
  • 只 update 或者只 insert
  • 无条件 insert 实现
  • 带 delete 的 update

测试表

-- 目标表
CREATE TABLE target ( ID NUMBER NOT NULL, NAME VARCHAR2 ( 12 ) NOT NULL, YEAR NUMBER 
);
-- 源表
CREATE TABLE source (ID NUMBER NOT NULL,AID NUMBER NOT NULL,NAME VARCHAR2 ( 12 ) NOT NULL,YEAR NUMBER,CITY VARCHAR2 ( 12 ) 
);
-- 插入测试数据
INSERT INTO target
VALUES( 1, 'liuwei', 20 );
INSERT INTO target
VALUES( 2, 'zhangbin', 21 );
INSERT INTO target
VALUES( 3, 'fuguo', 20 );
INSERT INTO source
VALUES( 1, 2, 'zhangbin', 30, '吉林' );
INSERT INTO source
VALUES( 2, 4, 'yihe', 33, '黑龙江' );
INSERT INTO source
VALUES( 3, 3, 'fuguo', '', '山东' );

普通模式

merge使用注意点

1、如果using中的语句查询不出来数据,是不会执行insert方法的,因为这个语法是根据using 中的查询数据进行判断

merge into student a
using (select id  from student where id = '7') s
on (a.id = s.id )
when matched thenupdate set a.student_name = '小明二号'
when not matched theninsert (id, student_name, fk_class) values ('7', '小明', '2')

2、on 中的条件记得过滤准确,不然可能会执行全表更新

merge into student a
using (select count(1)cot,id  from student group by id ) s
on (a.id = s.id and cot > 0)
when matched thenupdate set a.student_name = '小明二号'
when not matched theninsert (id, student_name, fk_class) values ('7', '小明', '2')

这么写的话可以看出明显的错误,只要是id相等且cot大于0,那么查询出的都大于0,会执行全表更新
3、on 中的条件不能是更新操作列,不然会报错:ora-38104

merge into student a
using (select '7' as id from dual) s
on (a.id = s.id)
when matched thenupdate set a.id = '7'
when not matched theninsert (id, student_name, fk_class) values ('7', '小明', '2');

参考:
https://blog.csdn.net/weixin_44657888/article/details/124591434

https://www.jianshu.com/p/8f51ce60d9ba

http://www.yayakq.cn/news/230274/

相关文章:

  • 做fpga的网站上海哪个网站最好用
  • 企业网站的建设目的是什么wordpress远程安装教程
  • 成都前十名传媒网站建设云岭先锋网站是哪家公司做的
  • 怎样做网站卖网站wordpress标签页插件
  • 邯郸网站建设联系电话seo服务的内容
  • 人人做网站iis网站视频无法播放
  • 上门做网站公司哪家好网站建设是不是无形资产
  • 用lnmp做网站怎么优化百度关键词
  • 免费网站建设设计制作公司网站目的
  • 专业网站制作哪专业斗蟋蟀网站建设
  • 上海建网站工作室两学一做考试网站
  • 建设网站的网站叫什么男简约风格网站
  • 北京住房建设部网站首页电脑传奇游戏哪个好玩
  • 石家庄住建局网站做网站都需要自己的服务器吗
  • 网站集约化建设探讨6做网站
  • 保定网站建设找谁宜昌网站设计
  • 建设银行开县支行 网站网站的产品上传图片
  • wordpress 5.2.2安装要求模板网站有利于做seo吗
  • 企业网站如何建设网站建设需要知识
  • 学校 网站建设招聘外国服务器的网站
  • 视频网站管理系统太原如何做百度的网站
  • 注册建公司网站手机网站快速建设
  • 做网站的个人心得深圳建设方面上市公司有
  • 做快递单网站重庆建站
  • 吉林省建设监理协会网站诚信建设上海外贸公司排名
  • 网络公司市值最新排名安庆网站关键词优化
  • 做网站前台用什么网站加视频播放设计怎么做的
  • sz住房和城乡建设部网站巩义企业网站快速优化多少钱
  • 网站seo问题WordPress同步某个表
  • 淄博张店外贸建站公司360优化大师最新版