1. 程式人生 > >oracle的多表關聯更新或者插入

oracle的多表關聯更新或者插入

http://blog.csdn.net/yuzhic/article/details/1896878

http://blog.csdn.net/macle2010/article/details/5980965

該命令使用一條語句從一個或者多個數據源中完成對錶的更新和插入資料. ORACLE 9i 中,使用此命令必須同時指定UPDATE 和INSERT 關鍵詞,ORACLE 10g 做了如下改動。

1,insert 和update是可選的 2,UPDATE 和INSERT 後面可以跟WHERE 子句 3,在ON條件中可以使用常量來insert 所有的行到目標表中,不需要連線到源表和目標表 4,UPDATE 子句後面可以跟delete 來去除一些不需要的行。

舉例:

  1. createtable PRODUCTS   
  2.     (   
  3.     PRODUCT_ID INTEGER,   
  4.     PRODUCT_NAME VARCHAR2(60),   
  5.     CATEGORY VARCHAR2(60)   
  6.     );   
  7. insertinto PRODUCTS values (1501, 'VIVITAR 35MM''ELECTRNCS');   
  8. insertinto PRODUCTS values (1502, 'OLYMPUS IS50''ELECTRNCS');   
  9. insertinto
     PRODUCTS values (1600, 'PLAY GYM''TOYS');   
  10. insertinto PRODUCTS values (1601, 'LAMAZE''TOYS');   
  11. insertinto PRODUCTS values (1666, 'HARRY POTTER''DVD');   
  12. commit;   
  13. createtable NEWPRODUCTS   
  14.     (   
  15.     PRODUCT_ID INTEGER,   
  16.     PRODUCT_NAME VARCHAR2(60),   
  17.     CATEGORY VARCHAR2(60)   
  18.     );   
  19. insertinto NEWPRODUCTS values (1502, 'OLYMPUS CAMERA''ELECTRNCS');   
  20. insertinto NEWPRODUCTS values (1601, 'LAMAZE''TOYS');   
  21. insertinto NEWPRODUCTS values (1666, 'HARRY POTTER''TOYS');   
  22. insertinto NEWPRODUCTS values (1700, 'WAIT INTERFACE''BOOKS');   
  23. commit;   
  24. 1,可省略的update 或者insert
  25.    MERGE INTO products p   
  26.     2 USING newproducts np   
  27.     3 ON (p.product_id = np.product_id)   
  28.     4 WHEN MATCHED THEN
  29.     5 UPDATE
  30.     6 SET p.product_name = np.product_name,   
  31.     7 p.category = np.category;

  使用表newproducts中的product_name 和category欄位來更新表products 中相同product_id的product_name 和category.

2,當條件不滿足的時候把newproducts表中的資料INSERT 到表products中。

  1. MERGE INTO products p   
  2.     USING newproducts np   
  3. ON (p.product_id = np.product_id)   
  4. WHENNOT MATCHED THEN
  5. INSERT
  6. VALUES (np.product_id, np.product_name,   
  7.      np.category);   

3,帶條件的insert 和update

  1. MERGE INTO products p   
  2.  USING newproducts np   
  3. ON (p.product_id = np.product_id)   
  4. WHEN MATCHED THEN
  5. UPDATE
  6. 相關推薦

    oracle關聯更新或者插入

    http://blog.csdn.net/yuzhic/article/details/1896878 http://blog.csdn.net/macle2010/article/details/5980965 該命令使用一條語句從一個或者多個數據源中完成對錶的更新和插入資料. OR

    Oracle 關聯更新

    upd from ber char set var rom rac reat create table t1(   id number(10),   name varchar2(10));create table t2(   id num

    Oracle關聯更新(update關聯

    .Oracle沒有update from語法,可以通過兩種實現方式: 1、利用子查詢:      update    A        SET    欄位1=(select    欄位表示式    from    B    WHERE    ...),       

    oracle 關聯更新,需要更新的欄位在另一個表裡(lfn)

    update customers a -- 使用別名 set city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id) where exists (select

    Oracle關聯如何更新個字段

    表關聯 select 結果集 sele 部分 date sts 條件 from 註意點:1、被update主表一定要加上過濾條件。2、查詢出來更新結果集,同時也要作為被更新主表的條件,作為同步大家都是更新這部分數據。update student stu  set (stu.

    關聯更新sql

    cheng upan update 表關聯 關聯 sel mce date 多表 UPDATE S_fangyuanxinxi SET wuyeleixing = (SELECT s_dalou.yongtu FROM s_dalou

    ORACLE關聯UPDATE 語句

    dbms 說明 相同 linux 全國 別名 所有 問題 from 1) 最簡單的形式 SQL 代碼 --經確認customers表中所有customer_id小於1000均為‘北京‘ --1000以內的均是公司走向全國之前的本城市的老客戶:) updat

    MySQL5.7關聯更新

    mysqlupdate ord ainner join room b on a.roomno=b.roomnoinner join flat c on a.flatno = c.flatno and a.flatsub=c.flatsubset a.xrea = b.xrea,a.ritysubn=b.rit

    關聯更新

    有A、B張表,其記錄如下: A表 c1       c2 -------------- 1       a1 2       a2 3       a3 8       a8 B表 c1       c3 -------------- 1        b1

    Oracle關聯查詢

    select e.empno, e.ename, d.deptno, d.dname   from emp e, dept d  where e.deptno = d.deptno; 在上述sql語句中先執行 from 後執行select和where  如果使用了別

    MySQL 關聯更新及刪除

    一、      多表關聯更新 問題描述:現有tdb_goods表(含有具體資訊)和tdb_goods_cates表(沒有具體資訊),需要查詢tdb_goods表的所有記錄,並且按"類別"分組,且將分組結果寫入到tdb_goods_cates資料表。然後通過tdb_goods

    UPDATE關聯更新時為什麼會慢

    構建環境如下: Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 Connected as [email protected]:1521/orcl SQL> C

    SQL/Oracle關聯更新

       有TA, TB兩表,假設均有三個欄位id, name, remark. 現在需要把TB表的name, remark兩個欄位通過id關聯,更新到TA表的對應欄位。 建表指令碼: drop table TA; create table TA ( id number n

    Oracle聯合更新

    以下是在後臺更新易拓ERP資料庫時遇到的一個問題: 1.在DB14資料庫中將料件號P44開頭,並且品名為"塑料袋"的料件改為消耗性料件.           這個簡單:  UPDATE DB14.ima_file SET ima70 = ‘Y’ WHERE ima

    update left join 關聯更新

    UPDATE table_1 t1 left join table_2 t2 on t2.id = t1.tid SET t1.username = t2.uname where t1.id>5

    ORACLE 關聯 UPDATE 語句

    -- 源表 CREATE TABLE test_from (id INT, val VARCHAR(20)); -- 目標表 CREATE TABLE test_to (id INT, val VARCHAR(20)); -- 插入源表 INSERT INTO test_from VALUES 

    Oracle關聯更新

     有TA, TB兩表,假設均有三個欄位id, name, remark. 現在需要把TB表的name, remark兩個欄位通過id關聯,更新到TA表的對應欄位。 建表指令碼: droptable TA;   createtable TA   (   id nu

    Oracle 關聯查詢後修改

    --t_veh_traffic_vio 違法表 --vhcl_info 車輛資訊表 --單表修改,修改2014年4月份違法資料的同步標誌位 update t_veh_traffic_vio t

    SQL update關聯更新

    UPDATE 表2 SET 表2.C = (SELECT B FROM 表1 WHERE 表1.A = 表2.A) WHERE exists ( SELECT 1 FROM 表1 WHERE 表1.A = 表2.A) ; update TA a set(name, re

    Oracle 關聯update

    多表關聯執行update1.僅在where子句中連線--table2中全部為優秀學生,將table1中的優秀學生的成績更新為優 update table1 t1 set t1.grade = '優' where exists ( select 1 from table