• oracle merge into语法


    oracle的merge into语法,在这种情况下:

    基于某些字段,存在就更新,不存在就插入

    不需要先去判断一下记录是否存在,直接使用merge into

    oerge into 语法

    MERGE INTO table_name alias1
    USING (table|view|sub_query) alias2
    ON (join condition)
    WHEN MATCHED THEN
        UPDATE table_name
        SET col1 = col_val1,
               col2 = col_val2
    WHEN NOT MATCHED THEN
        INSERT (column_list) VALUES (column_values);

    具体就是:

    MERGE INTO T T1
    USING (SELECT '1001' AS a,2 AS b FROM dual) T2
    ON ( T1.a=T2.a)
    WHEN MATCHED THEN
    UPDATE SET T1.b = T2.b
    WHEN NOT MATCHED THEN
    INSERT (a,b) VALUES(T2.a,T2.b);

    简单总结一下:

      目标表 T1,是需要更新或者插入的表,T2 是源数据表,使用T2表的数据去更新T1表,条件是,T1的字段“a” 等于 T2的字段“a”,

      如果匹配,执行“UPDATE SET T1.b = T2.b”

      如果不匹配,执行“INSERT (a,b) VALUES(T2.a,T2.b)”

    注意固定写法:

      1、useing 后面是括号,内容是源数据表 

      2、Update 后面不用加表名

      3、Inser 后面不用加 “into 表名”

    在一个同时存在Insert和Update语法的Merge语句中,总共Insert/Update的记录数,就是Using语句中T2的记录数

  • 相关阅读:
    Oracle DB管理内存
    DISPLAY变量和xhost(原创)
    CentOS7下swap分区创建(添加),删除以及相关配置
    如何在linux下开启FTP服务
    linux系统下如何挂载NTFS移动硬盘
    Oracle DB 使用RMAN恢复目录
    Oracle数据库联机重定义讲解及错误处理
    linux常用命令
    iptables常用命令
    python打印详细的异常信息
  • 原文地址:https://www.cnblogs.com/Springmoon-venn/p/8519557.html
Copyright © 2020-2023  润新知