select a.ne_id,
       a.related_ne1,
       a.related_type1,
       a.parent_ne_id,
       a.parent_ne_type
from   tcc_ne_snap  a
where  a.ne_type=600  
  and  a.compress_date='2012-9-25' 
  and  a.related_type1=7101;24号和25号的a.related_ne1,a.related_type1, a.parent_ne_id, a.parent_ne_type这几个字段的值不一样。在oracle中,如何将9月24日的这几个字段的数据更新成和25日相同的值?
怎么写SQL语句?
谢谢各位啦!

解决方案 »

  1.   

    其中它们是通过ne_id关联起来的
      

  2.   

    --除了常规的UPDATE语句之外,还可以使用
    MERGE INTO (SELECT A.NE_ID,  A.RELATED_NE1,  A.RELATED_TYPE1,  A.PARENT_NE_ID,  A.PARENT_NE_TYPE FROM TCC_NE_SNAP A
        WHERE A.NE_TYPE=600     AND A.COMPRESS_DATE='2012-9-25'    AND A.RELATED_TYPE1=7101) O
    USING(SELECT A.NE_ID,  A.RELATED_NE1,  A.RELATED_TYPE1,  A.PARENT_NE_ID,  A.PARENT_NE_TYPE FROM TCC_NE_SNAP A
        WHERE A.NE_TYPE=600     AND A.COMPRESS_DATE='2012-9-24'    AND A.RELATED_TYPE1=7101) P
    ON (O.NE_ID = P.NE_ID)
    WHEN MATCHED THEN
    UPDATE SET RELATED_NE1 =P.RELATED_NE1 ,RELATED_TYPE1 =P.RELATED_TYPE1,PARENT_NE_ID=P.PARENT_NE_ID,PARENT_NE_TYPE=P.PARENT_NE_TYPE;
      

  3.   


    UPDATE TCC_NE_SNAP A SET (A.RELATED_NE1,A.RELATED_TYPE1,A.PARENT_NE_ID,A.PARENT_NE_TYPE) =
    (
    SELECT B.RELATED_NE1,B.RELATED_TYPE1,B.PARENT_NE_ID,B.PARENT_NE_TYPE
    FROM TCC_NE_SNAP B
    WHERE B.NE_TYPE=600
      AND B.COMPRESS_DATE='2012-9-25'
      AND B.RELATED_TYPE1=7101
     )
    WHERE A.NE_TYPE=600
      AND A.COMPRESS_DATE='2012-9-25'  
      AND A.RELATED_TYPE1=7101;