2016-03-18 75 views
1

讓我們這樣的場景: 我身邊有500行和5cols相當數量的大表。 現在基於col1和col2的值,我想更新不同表格中col3的值。大表映射到另一個表

例如, COL1 COL2 COL3

 a b ab 
     c d cd 
     x y xy 
     . . .. 
     . . .. 
     . . .. 

我想借COL3的這個值(基於COL1 COL2 &的值),並存儲到一些不同的表。

對於例2。 col1 col2 col3

  good fine  nice 

     ample sufficient adequate 
     .   .   . 
     .   .   . 

請您引導我在Java或Oracle中有沒有任何概念,以便我可以達到我的目的。

回答

0

EDITED

使用子查詢

UPDATE targettable t 
set t.targetcol = (select a.col3 FROM tablea a where a.col1 = t.colx and a.col2 = t.coly) 
+0

感謝您的答覆,但是這並不是確切的情況。我剛剛添加了一個例子 - 否則就有一個字符串。 col1 col2 col3 不錯不錯 足夠充足 – inityk

+0

我們在談論數據庫表嗎? 「基於」是什麼意思? – Turo

+0

是Turo,Taliking關於數據庫表。通過'基於'我得到了一些值,我應該與col1和col2進行比較 - 基於我選擇col3的值 – inityk

0

這樣呢?

/* CREATE TABLE exampl1 AS (SELECT 'a' AS a,'b' AS b,'c' AS c FROM dual UNION 
         SELECT 'k' AS a,'l' AS b,'n' AS c FROM dual UNION 
         SELECT 'x' AS a,'y' AS b,'z' AS c FROM dual); 


CREATE TABLE exampl2 AS (SELECT 'a' AS a,'b' AS b,'_' AS c FROM dual UNION 
         SELECT 'k' AS a,'l' AS b,'_' AS c FROM dual UNION 
         SELECT 'x' AS a,'y' AS b,'_' AS c FROM dual); */      

BEGIN 
    FOR c1 IN (SELECT * 
       FROM exampl1) 
    LOOP 
    UPDATE exampl2 t2 
     SET t2.c = c1.c 
    WHERE t2.a = c1.a 
     AND t2.b = c1.b; 
    END LOOP; 
END;