【问题标题】:Large table mapping to another table大表映射到另一个表
【发布时间】:2016-07-04 19:46:15
【问题描述】:

让我们来看看这个场景: 我有相当多的大表,大约有 500 行和 5cols。 现在根据 col1 和 col2 的值,我想更新不同表中 col3 的值。

例如。 col1 col2 col3

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

我想取 col3 的值(基于 col1 和 col2 的值)并存储到一些不同的表中。

对于 ex2。 col1 col2 col3

         good    fine       nice 

       ample  sufficient  adequate
         .            .            .
         .            .            .

请您指导我是否有 Java 或 oracle 中的任何概念,以便我可以实现我的目的。

【问题讨论】:

    标签: java sql oracle mapping


    【解决方案1】:

    喜欢吗?

    /* 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;
    

    【讨论】:

      【解决方案2】:

      已编辑

      使用子选择

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

      【讨论】:

      • 感谢您的回复,但这不是确切的情况。我刚刚添加了它作为示例,否则会有一个字符串。 col1 col2 col3 好 好 好 够用 够用
      • 我们在谈论数据库表吗? “基于”是什么意思?
      • 是的,Turo,谈论数据库表。通过“基于”的方式-我得到了一些值,我应该将其与 col1 和 col2 进行比较-基于我选择 col3 的值
      • “某些值”是否来自目标表?我改变了我的答案,假设......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多