现有TABLE1和TABLE2两个表,
TABLE1里有AA,BB,CC,DD,EE,FF列
TABLE2里有BB,CC,DD,EE,FF列
现在想把TABLE2的数据追加到TABLE1里,并且在TABLE1对应的AA里填入‘TABLE2’用来标示这些记录是来自TABLE2的,请问该如何去写

解决方案 »

  1.   

    insert into table1 
    select 'table2' ,bb,cc,dd,ee,ff from table2
      

  2.   

    要的是这个??INSERT INTO TABLE1
    (AA,BB,CC,EE,FF)
    SELECT '来自TABLE2',BB,CC,DD,EE,FF
    FROM TABLE2
      

  3.   

    正解!
    insert into table1(AA,BB,CC,DD,EE,FF) select 'TABLE2' aa ,bb,cc,dd,ee,ff from table2;
      

  4.   

    如果还有table3,table4该怎么实现?
      

  5.   

    表结构和table2一样吗?
    insert into table1 
    (select 'table2' ,bb,cc,dd,ee,ff from table2
    union all
    select 'table3',bb,cc,dd,ee,ff from table3
    union all
    select 'table4',bb,cc,dd,ee,ff from table4)
      

  6.   

    那你最好还是写个过程,如果你table1、table2.。。table100,是这样有顺序的,那么采用动态sql拼接你的表名,直接在过程中循环查询将这些结果union后再insert
      

  7.   

    --如果很多表的话 建议使用hint 这样速度会快很多
    insert /*+append*/ into table1  --加上/*+append*/是采用直接装载的方式 
    (select 'table2' ,bb,cc,dd,ee,ff from table2
    union all
    select 'table3',bb,cc,dd,ee,ff from table3
    union all
    select 'table4',bb,cc,dd,ee,ff from table4)
      

  8.   

    DECLARE
      NUM1 VARCHAR2(8);
      STRSQL VARCHAR2(2000);
    BEGIN
      FOR NUM1 IN '0001' .. '9999'
      LOOP
        SRTSQL :=
          'INSERT INTO TABLE1 SELECT '
          ||NUM1
          ||'BB,CC,DD,EE,FF FROM TABLE'
          ||NUM1;
        EXECUTE IMMEDIATE STRSQL;
        COMMTI;
      END LOOP;
    END;
    搞定,谢谢大家