zoukankan      html  css  js  c++  java
  • ORCLE中两张表对比更新合入(MERGE INTO)

    这几天遇到一种业务场景,需要将A表和B表对比,如果主键相同则更新,否则将A表数据插入B表

    完整SQL如下:

    MERGE INTO DTMH_UCAP.UCAP_DEPT T1 USING ( -- 用T2的数据插入T1,T2中SELECT 需将后续用到的字段都列出
        SELECT
            A.UNIT_UNID,
            A.UNIT_DIVISION_CODE,
            A.UNIT_FULL_NAME,
            A.UNIT_BELONG_NODE_UNID,
            A.UNIT_ORDER_ID,
            A.UNIT_CODE,
            '1' AS DEPT_IS_ENABLED,
            '1' AS DEPT_IS_BUSINESS 
        FROM
            DTTYYH_CORE.UMC_UNIT A 
        ) T2 ON ( T1.DEPT_UNID = T2.UNIT_UNID )  -- 使用两张表字段进行对比是否相同
        WHEN MATCHED THEN  -- 如果相同,则更新
    UPDATE 
        SET T1.DEPT_NAME = T2.UNIT_FULL_NAME,
        T1.DEPT_NAME_SPELL = T2.UNIT_DIVISION_CODE 
        WHEN NOT MATCHED THEN -- 如果不相同,则插入
        INSERT (
            T1.DEPT_UNID,
            T1.DEPT_NAME_SPELL,
            T1.DEPT_NAME,
            T1.DEPT_BELONGTO,
            T1.DEPT_SORT,
            T1.DEPT_SERIAL_NUMBER,
            T1.DEPT_IS_ENABLED,
            T1.DEPT_IS_BUSINESS 
        )
    VALUES
        (
            T2.UNIT_UNID,
            T2.UNIT_DIVISION_CODE,
            T2.UNIT_FULL_NAME,
            T2.UNIT_BELONG_NODE_UNID,
            T2.UNIT_ORDER_ID,
            T2.UNIT_CODE,
            T2.DEPT_IS_ENABLED,
            T2.DEPT_IS_BUSINESS 
        );
  • 相关阅读:
    点聚-weboffice 6.0 (二)
    点聚-weboffice 6.0 (一)
    Hibernate连接池设置
    ajax工作原理(转)
    LigerUI java SSH小例子
    file标签样式修改
    好久不来了,回来园子看看
    resharper 8.2
    无聊的要死
    无聊
  • 原文地址:https://www.cnblogs.com/lansetuerqi/p/12870803.html
Copyright © 2011-2022 走看看