首页 > 数据库 >oracle中的merge into用法解析

oracle中的merge into用法解析

时间:2023-05-15 20:34:16浏览次数:39  
标签:target source into merge oracle age id name

1.如果存在更新,不存在插入

MERGE INTO merge_target target 
USING (SELECT B.name,B.age,B.target_id FROM merge_source B) source 
ON (target.id=source.target_id) 
WHEN MATCHED THEN  
UPDATE  SET target.name = source.name,  target.age = source.age 
WHEN NOT MATCHED THEN  
INSERT(target.name,target.age) VALUES (source.name,source.age);

2.只 insert

MERGE INTO merge_target target 
USING (SELECT B.name,B.age,B.target_id FROM merge_source B) source 
ON (target.id=source.target_id) 
WHEN NOT MATCHED THEN  
INSERT(target.name,target.age) VALUES (source.name,source.age);

3.只 update

MERGE INTO merge_target target 
USING (SELECT B.name,B.age,B.target_id FROM merge_source B) source
ON (target.id=source.target_id) 
WHEN MATCHED THEN  
UPDATE  SET target.name = source.name,  target.age = source.age 

4.带where条件的更新和插入

merge into A_MERGE A
USING (select B.AID,B.name,B.year,B.city from B_MERGE B) C
ON(A.id=C.AID)
when matched then
update SET A.name=C.name where C.city != '江西'
when not matched then 
insert(A.ID,A.name,A.year) values(c.AID,C.name,C.year) where C.city='江西';

5.delete 和 update

merge into target t using source s on(t.id = s.aid)
when matched then update set t.year = s.year
delete where(t.id = 2); 

 6. 无条件 insert  

merge into target t using source s on(1 = 0) -- 设置永假匹配条件
when not matched then
insert(t.id, t.name, t.year) values(s.aid, s.name, s.year); 

 

 

标签:target,source,into,merge,oracle,age,id,name
From: https://www.cnblogs.com/lgx5/p/17402991.html

相关文章

  • Oracle存储过程的基本学习
    Oracle存储过程的基本学习摘要这个简要学习应该会分为上下两部分第一部分是存储过程的学习.第二部分是python的学习.核心目标是查询Oracle数据库中的主键数据.如果有主键upper之后相同的数据查询出来.并且进行展示避免部分数据迁移时出现问题.存储过程的语法以及主......
  • Oracle中start with...connect by prior子句用法
    connectby是结构化查询中用到的,其基本语法是:select...fromtablenamestartwith条件1connectby条件2where条件3;例:select*fromtablestartwithorg_id='HBHqfWGWPy'connectbypriororg_id=parent_id;简单说来是将一个树状......
  • Python学习之六_同时访问Oracle和Mysql的方法
    Python学习之六_同时访问Oracle和Mysql的方法背景jaydebeapi可以访问大部分数据库.但是他有一个问题是仅能够访问一种类型的数据库.如果同事连接两种数据库,那么就会出现问题会有如下的提示:TypeError:Classcom.mysql.cj.jdbc.Driverisnotfound网上有方法是修改j......
  • oracle根据 部署环境日志SQL查询中格式不正确 ORA-01810
    --查询TESTDATE数据表中,指定日期的所有字段SELECT*FROMXXCWHEREC.CREATEDATE=TO_DATE('2022-12-2308:50:44','yyyy-MM-ddHH24:mm:ss');ORA-01810报错在进行TO_DATE或者TO_STAMP的操作sql还是报错;由于Oracle中的格式化字符串不区分大小写,所以月份的MM和......
  • 华硕 PRIME H610M-A D4 i5-12490F 1060电脑 Hackintosh 黑苹果efi引导文件
    原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔)硬件型号驱动情况主板华硕PRIMEH610M-AD4(LPCController/eSPIControllerH610芯片组)处理器12thGenIntelCorei5-12490F六核已驱动内存 16GB(酷兽DDR43200MHz8GBx2)已驱动硬盘三星SSD860EVO250G......
  • SQL Server数据实时同步至Oracle数据库中
    1、使用SSMS中的链接服务器链接Oracle请参考链接  SQLServer客户端链接服务器到Oracle数据库全攻略_sqlserver连接oracle数据库_简单的你我1314的博客-CSDN博客2、使用触发器(insertupdatedelete)获取更改的数据然后同步至Oracle中(使用openquery查询)//openquery语句ORCL......
  • Oracle系列---【oracle使用expdp和impdp实现导入导出】
    一、前提条件两个数据版本和字符集还有语言得一致。#查看数据库版本号selectversionfromv$instance;#查看语言和字符集selectuserenv('language')fromdual;二、创建临时表空间MY_TEMPsu-oraclesqlplus/assysdba;SQL>CREATEDIRECTORYMY_TEMPAS'/OPT/TEM......
  • Oracle 核心列信息查看与处理
    Oracle核心列信息查看与处理背景最近想对数据库表进行跨数据之间的比照因为有一些自增列或者是时间戳的列不需要进行对比后者是对比容易导致失真.所以就准备选用其他方式进行一下处理.本文主要是简单记录一下生成SQL的办法.获取必要列作为select的字段SELECT LI......
  • oracle11 docker-compose.yml,启动时导入sql文件
    version:'3'services:oracle:image:wnameless/oracle-xe-11g-r2container_name:oracle11gr2environment:-'NLS_LANG=AMERICAN_AMERICA.AL32UTF8'volumes:-"./create.sql:/docker-entrypoint-initdb.d/......
  • oracle报错:ORA-01034错误:oracle not available 播报文章
    1、ORA-01034错误:oraclenotavailable https://jingyan.baidu.com/article/d8072ac4a016c5ec94cefd72.html 首先先先测试一下,监听是否启动:lsnrctlstatus;如果监听没有启动,则如果监听没起lsnrctlstar,监听启动要将近1分钟的时间。 2连接数据库:connect ......