zoukankan      html  css  js  c++  java
  • 由一个表更新另一个表中field

    来源:http://hi.baidu.com/chaowei_yuwen/blog/item/e2078ecbabccc081c9176841.html

    由一个表里的数据更新另一个表里的数据:
    情况:
    因为操作错误,导致库存里件号和货品不符合,用新提供的excel数据(很多,而且仅仅批号lot_no和货品prod_id)去更新原有数据。
    做法:
    建立临时表(用临时表导数据是一种技巧)
    SQL:
    update inventory set prod_id=
    (
    select prod_id from inventory_temp where inventory_temp.lot_no=inventory.lot_no
    )
    where exists
    (
    select lot_no from inventory_temp where inventory_temp.lot_no=inventory.lot_no
    )
    体会:
    用一个表去更新另一个表
    上边写法可以简写为:
    update a
    set a.name=(select b.name from a.id = b.id)
    where exsits (select 1 from a.id = b.id);
    如果更新的是多个字段:
    UPDATE employees a
        SET department_id =
            (SELECT department_id
                FROM departments
                WHERE location_id = '2100'),
            (salary, commission_pct) =
            (SELECT 1.1*AVG(salary), 1.5*AVG(commission_pct)
              FROM employees b
              WHERE a.department_id = b.department_id)
        WHERE department_id IN
            (SELECT department_id
              FROM departments
              WHERE location_id = 2900
                  OR location_id = 2700);

    -------------------------------------------

    另外一个: http://blog.csdn.net/Bobwu/archive/2009/01/13/3768636.aspx

    1.

    declare
    cursor t1 is select * from tablename;
    begin
    for rec in t1 loop
    update tablename t set t.detail=rec.jieshao where t.objectid=rec.objid;
    end loop;
    end;

    2.

    update   student   set   (name,id   )=  
      (select   name   ,id     from   (select   student.rowid   rd,student1.name,student1.id   from   student1,student   where   student1.int_id   =student.int_id)   tmp  
      where   student.rowid=tmp.rd);  
      commit;

    3.

    update test_a a set (a.name,a.age)=
    (select b.name,b.age from test_b b where a.id = b.id) where exists
    (select * from test_b c where c.id=a.id)

    4.

    UPDATE   t_A   SET   Djrq=    
      (  
              SELECT   djrq   FROM   t_B   WHERE   t_A.ID   =   T_B.ID    
              WHERE   ROWNUM   =   1    
      )  
      WHERE   t_A.ID   IN    
      (  
              SELECT   ID   FROM   t_B   WHERE   jwh='XX村'  
      )

    5.

    update tbl1 a
       set (a.col1, a.col2) = (select b.col1, b.col2
                                  from tbl2 b
                                  where a.key = b.key)
       where a.key in(select key from tbl2)

    保存备用

  • 相关阅读:
    创建数据库的那些事
    同步、异步、阻塞、非阻塞我的理解
    Openfire MultiUserChat 多用户聊天 消息发送
    JAVA 随机字符串
    OF 同步异步问题的改进
    Openfire S2S 监听与消息处理
    MySQL FEDERATED 存储引擎
    一个S2S通信中的同步、异步问题的解决
    Openfire Monitoring/jinglenodes plugin error
    Java Cache System JCS(一) 使用方法
  • 原文地址:https://www.cnblogs.com/lost0/p/1489367.html
Copyright © 2011-2022 走看看