代码之家  ›  专栏  ›  技术社区  ›  negersiu

插入前更新(Oracle)

  •  1
  • negersiu  · 技术社区  · 16 年前

    我有两个具有相同表结构的模式S1和S2。我先举个例子:

    在S1.1表中,我有:

        ID   DATA1       DATA2
       ---- ---------- ---------- 
        01   data1       test1
        02   data1       test1
    

    在S2.1表中,我有:

         ID   DATA1       DATA2
       ---- ---------- ---------- 
        01   data2       test2
        02   data2       test2
    

    是否可以选择一行(来自S1.table1)更新它(更改ID列的值)并将其插入S2.table1? 我想编写一个SQL查询,它将用作预处理语句(Java)。

         ID   DATA1       DATA2
       ---- ---------- ---------- 
        01   data2       test2
        02   data2       test2
        03   data1       test1
    

    所以我插入了S1.table1的第一行,只更改了ID。

    4 回复  |  直到 12 年前
        1
  •  2
  •   Jacob Mattison    16 年前

    INSERT INTO S2
    SELECT 03, DATA1, DATA2 FROM S1 WHERE ID=01
    

    也就是说,您只需选择所需的数据,但明确指出任何替换数据。

        2
  •  1
  •   Lucero    16 年前
    INSERT INTO S2 (Data1, Data2) SELECT Data1, Data2 FROM S1 WHERE ID=xxx
    

    假设S2中的ID是自动递增的(例如通过序列和触发器)。

        3
  •  1
  •   Aaron Digulla    16 年前

    insert into s2.table1
    select seq.next_val, data1, data2
    from s1.table1
    

        4
  •  0
  •   Wilq Sam Paul    12 年前
    insert into s2.table1 (
      select id+1, data1, data2 
      from s1.table1 
      where id=(select max(id) from s1.table1)
    );