zoukankan      html  css  js  c++  java
  • merge

    从ORACLE 9i开始,ORACLE提供了可以同时执行 insert ,update的命令merge 。

    创建测试表 info

    SQL> create table info(name varchar2(10),age number, address varchar2(10));

    Table created.
    插入3条测试数据

    insert into info values('robinson',100,'chongqing');
    insert into info values('luobingsen',100,'chongqing');
    insert into info values('luoluo',100,'chongqing');

    创建测试表 information

    SQL>
    create table information(name varchar2(10),id number,age number,address varchar2(10),school varchar2(10));
    Table created.
    插入4条测试数据

    insert into information values('robinson',1,21,'chongqing','xinandaxue');
    insert into information values('luobingsen',2,22,'beijing','xinandaxue');
    insert into information values('luoluo',3,23,'shanghai','xinandaxue');
    insert into information values('lbs',4,24,'tianjin','xinandaxue');

    此时info 表中数据如下

    SQL> select * from info;

    NAME              AGE ADDRESS
    ---------- ---------- ----------
    robinson          100 chongqing
    luobingsen        100 chongqing
    luoluo            100 chongqing

    information 表中数据如下

    SQL> select * from informATION;

    NAME               ID        AGE ADDRESS    SCHOOL
    ---------- ---------- ---------- ---------- ----------
    robinson            1         21 chongqing  xinandaxue
    luobingsen          2         22 beijing    xinandaxue
    luoluo              3         23 shanghai   xinandaxue
    lbs                 4         24 tianjin    xinandaxue

    现在,我想把information表name,age,address的信息插入到 info表中,

    如果info 表中没有 information的信息,那么直接将该信息添加到info表

    如果info 表中有information的信息,那么以information的信息为准,更新info表

    SQL> merge into info i
      2  using (select name,age,address from information) j
      3  on (i.name=j.name)
      4  when matched then update set i.age=j.age,i.address=j.address
      5  when not  matched then insert values(j.name,j.age,j.address);

    4 rows merged.

    SQL> select * from info;

    NAME              AGE ADDRESS
    ---------- ---------- ----------
    robinson           21 chongqing
    luobingsen         22 beijing
    luoluo             23 shanghai
    lbs                24 tianjin

  • 相关阅读:
    [转]实现财务自由的6大步骤
    [转] js 实现table每列可左右拖动改变列宽度
    [转]在Excel中使用SQL语句实现精确查询
    [书目20150727]有效沟通-余世维
    [书目20150727]选择重于一切(扎克伯格给年轻人的37个人生忠告)
    [转]把汉字写“绝”了
    [转]《间架结构92法》
    深圳社保转入
    广州社保转出
    [转]利用telnet进行SMTP的验证
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330713.html
Copyright © 2011-2022 走看看