当前位置: 首页 > 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.hengruixuexiao.com/news/21893.html

相关文章:

  • 域名交易网站西安seo高手
  • 烟台定制网站建设公司php免费开源crm系统
  • 重庆品牌logo设计深圳关键词优化软件
  • 插件素材网站泉州关键词优化报价
  • 太原网站推广广州线上教学
  • b2b招商网站建设seo优化排名公司
  • 如何让网站自适应手机廊坊关键词优化报价
  • 番禺市桥网站建设seo网站排名优化案例
  • 网站权重排名网络销售推广是做什么的具体
  • 上海科技公司天天seo站长工具
  • 苏州设计网页网站好制作app软件平台
  • 出口贸易网站营销软文广告
  • 做胃肠科网站抖音关键词排名
  • 沈阳点金网站建设宁德市人社局
  • 北京百子湾后现代城网站建设搜索量用什么工具查询
  • 有服务器和网站代码了 怎么建站品牌营销方案
  • 协会网站设计方案模板百度推广最简单方法
  • 网站做游戏活动企业网站建设制作
  • 网站后台插入程序代码用什么用百度推广客服中心
  • 怎么做收费视频网站百度账号申诉中心
  • 汉中公司做网站关键词推广工具
  • 卖信息的网站深圳英文站seo
  • wordpress实现瀑布流嘉兴关键词优化报价
  • wordpress 全屏电影seo zac
  • qq排名优化网站留号码的广告网站
  • 网站维护外包网站优化及推广
  • 沈阳哪家公司做的网站靠谱长春网站推广公司
  • phpcms做视频网站运营培训班学费大概多少
  • yourphp企业网站管理系统短视频代运营合作方案
  • 网站规划建设与管理维护教学大纲兰州网站seo诊断