zoukankan      html  css  js  c++  java
  • oracle:MERGE语句

    将源表添加到目标表,如果目标表中行已经存在,可以更新数据,如果不存在,可以插入数据。

    之所以说可以,因为更新、插入操作都是要自己写的。 - -!

    9i 时必须update insert 都有,10g以后至少有一个

    MERGE INTO target_table_name tar_t
    USING source_table_name sou_t ON
    (expr1)
    WHEN MATCHED THEN
    expr2
    WHEN NOT MATCHED THEN
    expr3;

    (这只是一条sql 语句 - -!)

    expr1 为判断语句,例如 tar_t.id = sou_t.id
    expr2 为目标行存在的操作, 例如 UPDATE SET xxxx [WHERE xxx]  [DELETE WHERE (xxx)]

    expr3 为不存在时的操作,例如INSERT VALUES (xxxx) [WHERE xxx] 

    WHEN 语句只写一个,那么另外的那个将被忽略

    expr1时可以对UPDATE加WHERE 操作,控制部分更新

    UPDATE
    SET expr1
    WHERE xxx

    where 操作只能在满足 ON 条件的数据下再一次选择
    DELETE 语句只能删除 目标表的行,就算是特意指明是源表,也会删除目标表

    而且DELETE语句一定在 WHERE 后面(如果存在),就是上面expr2 的格式

    需要注意的是在UPDATE时出现多组源表数据对应目标表中的一行数据(这种情况可以通过primary key 解决)

    如果expr1 中有空值做判断,不会跳入 MATCHED 和 NOT MATCHED

    MERGE 可以做很多UPDATE 的操作

  • 相关阅读:
    查找一 线性表的查找
    排序八 基数排序
    Numpy数组的保存与读取方法
    编写你的第一个django应用程序3
    查看当前目录的文件
    requests不加代理
    .idea文件夹是干嘛的
    python获取当前的时间
    redis命令
    windows下python安装face_recognition模块
  • 原文地址:https://www.cnblogs.com/Azhu/p/2439861.html
Copyright © 2011-2022 走看看