现在有两张表:A,B, 
A
(
  DB001    VARCHAR2(2 BYTE)                 NOT NULL,
  DB002    VARCHAR2(10 BYTE)                NOT NULL,
  DB003    VARCHAR2(10 BYTE)                NOT NULL,
  SEGMENT_GID  VARCHAR2(32 BYTE),)
B
DB2307
(
  CLASS           VARCHAR2(2 BYTE)              NOT NULL,
  CODE_ID         VARCHAR2(10 BYTE)             NOT NULL,
  CODE_CDESC      VARCHAR2(50 BYTE),
  CODE_EDESC      VARCHAR2(50 BYTE),
  CODE_REMARK1    VARCHAR2(50 BYTE),)
现在A表的SEGMENT_GID  是空的,想用B表的 CODE_REMARK1去更新A表的SEGMENT_GID 字段,条件A.DB001=B.CODE_ID
 如果CODE_REMARK1也是空的话,就给  SEGMENT_GID  更新为123 
。    
请问大家改如何写呢? 

解决方案 »

  1.   

    update a  
    set a.SEGMENT_GID = 
                       (select nvl(b.CODE_REMARK1, '123') 
                        from   b 
                        where  A.DB001=B.CODE_ID)
      

  2.   

    参考语句:UPDATE A SET SEGMENT_GID = 
    (SELECT NVL(CODE_REMARK1, '123') FROM B
     WHERE B.CODE_ID = A.DB001)
    这里用到了相关子查询。