首页 > 数据库 >Oracle - MERGE关键字用法

Oracle - MERGE关键字用法

时间:2023-06-27 09:45:26浏览次数:36  
标签:SRC CUST TAR NO -- MERGE 关键字 Oracle CARD

效果:查询两个结果集,根据其中一个,更新另一个。

在ETL项目中,掌握这个语句,就能完成大部分的数据处理了。

MERGE INTO (
    -- 目标结果集,需要更新的结果集
    SELECT * FROM A_EVT_NOTICE_SMY WHERE DATA_DT = '20230101'
) TAR
USING (
    -- 源结果集,更新依据的结果集
    SELECT A.* 
    FROM A_CIF_CIFP_CUST_INFO_SMY A
    INNER JOIN A_EVT_NOTICE_SMY B 
    ON A.CUST_NO = B.CUST_NO 
    WHERE A.DATA_DT = '20230101'
) SRC
-- 匹配条件
ON (TAR.CUST_NO = SRC.CUST_NO)
WHEN MATCHED THEN
    -- do sth. when 命中
    UPDATE SET TAR.CUST_NO = SRC.CUST_NO, TAR.ID_CARD = SRC.ID_CARD
WHEN NOT MATCHED THEN
    -- do sth. when 未命中
    INSERT
        (DATA_DT, INST_NO, CUST_MGR, CUST_NO, ID_CARD)
    VALUES
        (SRC.DATA_DT, SRC.INST_NO, SRC.CUST_MGR, SRC.CUST_NO, SRC.ID_CARD);

-- 
COMMIT;

实际操作之后,可能会遇到的问题:

WHEN MATCHED 执行 UPDATE 语句的时候,执行失败,
可能是目标结果集偏复杂(上面的 tar 子句),导致程序找不到结果集来自什么表。
解决方式自然也简单,“目标结果集” 尽可能改成 SELECT * FROM TABLE 的格式。

标签:SRC,CUST,TAR,NO,--,MERGE,关键字,Oracle,CARD
From: https://www.cnblogs.com/chenss15060100790/p/17507815.html

相关文章

  • CF1144G Two Merged Sequences
    CF1144GTwoMergedSequences题意现在给你一个长度为\(n\)的序列你要把它拆成一个严格递增序列和一个严格递减序列如果不可行输出\(NO\)如果可行输出\(YES\)并输出每个数属于递增序列还是递减序列题解感觉脑子瓦特了,感觉这个\(dp\)的状态设计是比较自然的。首先我们考......
  • Merge Sorted Array
    Youaregiventwointegerarraysnums1andnums2,sortedinnon-decreasingorder,andtwointegersmandn,representingthenumberofelementsinnums1andnums2respectively.Mergenums1andnums2intoasinglearraysortedinnon-decreasingorder.The......
  • volatile 关键字
    原文链接:https://liamw.cn/albums/csharp-dotnet/10-understand-the-volatile-keyword要理解C#中的 volatile 关键字,就要先知道编译器背后的一个基本优化原理。比如对于下面这段代码: publicclassExample{publicintx;publicvoidDoWork(){x......
  • 配置vnc远程连接Linux和unix服务器图形界面安装Oracle
    1、配置并开启vnc服务[oracle@localhost~]$vncserverYouwillrequireapasswordtoaccessyourdesktops.Password:---这里要求输入vnc客户端登录的密码并重复Verify:New'localhost.localdomain:2(oracle)'desktopislocalhost.localdo......
  • 探索ORACLE之ASM01_概念
    探索ORACLE之ASM01_概念作者:吴伟龙一、    ASM(自动存储管理)的来由:ASM是Oracle10gR2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,主要用于替代操作系统所提供的LVM,它不仅支持单实例,同时对RAC的支持也是非常好。ASM可以自动管理磁盘组并提......
  • oracle 统计信息查看与收集
    一、查看表统计信息altersessionsetNLS_DATE_FORMAT='YYYY-MM-DDHH24:MI:SS';selectt.TABLE_NAME,t.NUM_ROWS,t.BLOCKS,t.LAST_ANALYZEDfromuser_tablestwheretable_name='WOO';备注:通过脚本查看统计信息,参考MOS:SCRIPT-SelecttoshowOptimizerStatisticsfor......
  • Oracle 11gR2 使用RMAN Duplicate复制数据库
    Oracle11gR2 使用RMANDuplicate复制数据库 作者:吴伟龙 PrudentWoo  前言:    上周刚做完一个项目,用户要求RAC的数据库能够自动备份到另外一个单节点上,单节点能够正常拿起来就能用。当时跟他们讨论的是用ADG来做,但通过描述后,用户觉得如果要人工干预的话太麻烦,它不想做......
  • Oracle 安装报SGA size can not be greater than maximum shared memory segment size
    问题现象:问题分析:        从问题现象上来看可以比较清晰的看出是因为系统的内核参数调整问题,导致无法分配正确的内存给SGA;那么这种情况通常是由于我们的/etc/sysctl.conf中配置的内存信息和实际内存信息不符合导致。 我们的物理内存的大小为2G,swap内存的大小为4G;[root@d......
  • oracle 表空间利用率的几种查询方法
    --查询表空间使用情况SELECTUpper(F.TABLESPACE_NAME)"表空间名",D.TOT_GROOTTE_MB"表空间大小(M)",D.TOT_GROOTTE_MB-F.TOTAL_BYTES"已使用空间(M)",To_char(Round((D.TOT_GROOTTE_MB-F.TOTAL_BYTES)/D......
  • 探索Oracle之LogMiner 最佳实践一
    探索Oracle之LogMiner最佳实践一作者:吴伟龙PrudentWoo示例:    这是一个LogMiner示例配置。在这个图中,位于波士顿的源数据库生成重做日志文件,这些文件被归档并发送到旧金山的数据库。已将LogMiner字典提取到这些重做日志文件中。LogMiner将实际分析重做日志文件的挖掘数据库......