zoukankan      html  css  js  c++  java
  • 7.1有条件的更新插入 Merge into

    插入之前,看表中是否有这次准备插入的却已经存在的数据,存在的进行更新,不存在进行插入 

    在oracle里面有两种方法:

    一,Merge into

    MERGE INTO test1  

    USING test2  

    ON (test1.numid = test2.numid)  

    WHEN MATCHED THEN --不需要填写更新的目标表  

        UPDATE SET test1.varid = test2.varid  

    WHEN NOT MATCHED THEN --不需要填写插入的目标表  

    INSERT VALUES (test2.numid, test2.varid);  

    例子:

    --column1 column2 column3是变量

     MERGE INTO users a

          USING (SELECT v_column1 NAME, v_column2 password, v_column3 desc

                   FROM dual) b

          ON (a.name = b.name)

          WHEN MATCHED THEN

            UPDATE SET a.password = b.password and a.desc = b.desc

          WHEN NOT MATCHED THEN

            INSERT (NAME, password, desc) VALUES (b.NAME, b.password, b.desc);

    二.

    --p_column1是变量或者参数
    select count(*) into v_cnt from a where a.name = p_column1
    if v_cnt>0 then update ..
    else insert..
    oracle中的exists表示()内子查询语句返回结果不为空,是在where后面的.说明where条件成立就会执行主sql语句,
    如果为空就表示where条件不成立,sql语句就不会执行。
    not exists和exists相反,子查询语句结果为空,则表示where条件成立,执行sql语句。负责不执行。
    在sqlserver 可以直接使用
    if exists(select 1 from a where a.name = p_column1)
    update a set ...
    else
    insert ...

  • 相关阅读:
    __autoload函数
    错误处理try catch
    PHP面向对象基础实例
    类的继承关系实例
    YII重点文件
    //计算今年月度利息和
    cookie保存分页参数
    win64(win8)的python拓展包安装经验总结
    matcom安装时无法寻找到matlab.exe的解决办法
    《人人都是产品经理》阅读笔记一
  • 原文地址:https://www.cnblogs.com/sannyhome/p/9213248.html
Copyright © 2011-2022 走看看