2012-08-15 5 views
1

아래 쿼리에서 얻은 모든 결과에 대해 a.age 및 b.age를 32로 업데이트하려면 어떻게합니까? 임시 열은 아래 예와 같이 "CID"입니다.임시 열을 사용하여 Oracle 테이블의 항목을 업데이트하십시오.

select * 
    from (SELECT ROW_NUMBER() 
       OVER (PARTITION BY CUST_NAME ORDER BY CUST_NAME) AS CID,CUST_NAME,AGE,CITY,COLUMNB 
      FROM (select CUST_NAME,AGE,CITY,COLUMNB 
        from SOMETABLE 
       where date = '26-jULY-2012'))a 
    RIGHT join (select * 
       from (SELECT ROW_NUMBER() 
          OVER (PARTITION BY CUST_NAME ORDER BY CUST_NAME) AS CID,CUST_NAME,AGE,CITY,COLUMNB 
         FROM (select CUST_NAME,AGE,CITY,COLUMNB 
           from SOMETABLE2 
           where date = '26-jULY-2012')))b 
     on a.CID=b.CID 
    and a.CUST_NAME=b.CUST_NAME 
ORDER BY a.CUST_NAME,A.CID,a.COLUMNB; 
+0

_Where_ 당신이 그들을 업데이트 하시겠습니까? – Ben

+0

이 검색되는 동일한 테이블에 있습니다 (예 : a.age는 SOMETABLE에서 가져옴) –

답변

0
update sometable 
set age = 32 
where cid in (
select a.cid 
    from (SELECT ROW_NUMBER() 
       OVER (PARTITION BY CUST_NAME ORDER BY CUST_NAME) AS CID,CUST_NAME,AGE,CITY,COLUMNB 
      FROM (select CUST_NAME,AGE,CITY,COLUMNB 
        from SOMETABLE 
       where date = '26-jULY-2012'))a 
    RIGHT join (select * 
       from (SELECT ROW_NUMBER() 
          OVER (PARTITION BY CUST_NAME ORDER BY CUST_NAME) AS CID,CUST_NAME,AGE,CITY,COLUMNB 
         FROM (select CUST_NAME,AGE,CITY,COLUMNB 
           from SOMETABLE2 
           where date = '26-jULY-2012')))b 
     on a.CID=b.CID 
    and a.CUST_NAME=b.CUST_NAME 
) 
; 




update sometable2 
set age = 32 
where cid in (
select b.cid 
    from (SELECT ROW_NUMBER() 
       OVER (PARTITION BY CUST_NAME ORDER BY CUST_NAME) AS CID,CUST_NAME,AGE,CITY,COLUMNB 
      FROM (select CUST_NAME,AGE,CITY,COLUMNB 
        from SOMETABLE 
       where date = '26-jULY-2012'))a 
    RIGHT join (select * 
       from (SELECT ROW_NUMBER() 
          OVER (PARTITION BY CUST_NAME ORDER BY CUST_NAME) AS CID,CUST_NAME,AGE,CITY,COLUMNB 
         FROM (select CUST_NAME,AGE,CITY,COLUMNB 
           from SOMETABLE2 
           where date = '26-jULY-2012')))b 
     on a.CID=b.CID 
    and a.CUST_NAME=b.CUST_NAME 
) 
; 
+0

@ schurik-CID는 SOMETABLE 또는 SOMETABLE2에 존재하지 않는 임시 열이므로 솔루션이 작동하지 않습니다. –

+0

@HaranMurthy sometable과 sometable2의 기본 키 2? – schurik

관련 문제