zoukankan      html  css  js  c++  java
  • Oracle-更新字段-一张表的字段更新另一张的表的字段

    MERGE INTO A_MERGE A USING (select B.AID,B.NAME,B.YEAR from B_MERGE B) C ON (A.id=C.AID)
    WHEN MATCHED THEN
      UPDATE SET A.YEAR=C.YEAR 
    WHEN NOT MATCHED THEN
      INSERT(A.ID,A.NAME,A.YEAR) VALUES(C.AID,C.NAME,C.YEAR);
    commit;

    设备表ops_device_info中的终端号terminal_id值是以 'D'开头的字符串,而终端表ops__terminal_info中的终端号terminal_id是8位字符串, 它们之间是通过device_id关联的.

    ops_device_info 1-->n   ops_terminal_info

    现在希望将设备表中的终端号更改为终端表中的终端号.

    终端状态 4代表移机 5代表调试  6代表暂停  7代表启用  8代表报废  9代表停用

    方式一:

    update  ops_device_info d set d.terminal_id = (select t.terminal_id from ops_terminal_info t  where t.device_id=d.device_id and d.terminal_id like 'D%' and t.terminal_state not in ('8','9'))  
    where exists  
    (select t.terminal_id from ops_terminal_info t  where t.device_id=d.device_id and d.terminal_id like 'D%' and t.terminal_state not in ('8','9')); 

    方式二:

    merge into OPS_DEVICE_INFO t1
    using OPS_TERMINAL_INFO t2
    on (t1.device_id = t2.DEVICE_ID and t2.TERMINAL_STATE not in ('8','9'))
    when matched then
      Update
         set t1.TERMINAL_ID = t2.TERMINAL_ID
       where t1.terminal_id like 'D%';

    SQl执行过程中如果出现 '单行子查询返回多行记录',那可能是你的数据本身有点重复。; 可以使用 我的另一个sql查询一下重复数据 http://www.cnblogs.com/yangw/p/4088086.html .

    在oracle中判断某个字段是否含有字母

    select * from taccount t where  regexp_like(t.vc_code, '[a-zA-Z]');  

    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    盒子模型2+浮动
    盒子模型
    CSS背景和精灵图
    线程间的通信的实现
    操作系统中线程与进程
    java中的互斥锁和信号量的区别
    Java中的常见异常
    JVM面试问题
    软件测试分类
    软件测试
  • 原文地址:https://www.cnblogs.com/xin1006/p/4535221.html
Copyright © 2011-2022 走看看