我们在做程序时经常碰到把一个表或多个表里的数据拷贝到另一个表里(同名字段表结构相同)的情况.这时最好的选择就是用下面的SQL语句了.

    INSERT INTO TB_NAME (INSERT_COLS) SELECT SEL_SQLS FROM FR_TBNAME WHERE...
 
注意事项:
1.INSERT_COLS和SEL_SQLS的字段名,字段顺序需相同,字段的结构也必需相同.
  如果字段名不相同可以用别外的形式使其相同,如
INSERT INTO T1(NAME,AGE) SELECT NM AS NAME,AGE FROM T2...
 
2.碰到FROM表里没有字段可以用变量来代替,如:
INSERT INTO T1(NAME,AGE,GENDER) SELECT NAME,? AS AGE , ? AS GENDER
FROM T2....
在实行时传对应的参数来代替?就可以了.
 
** 碰到要插DATE,NUMBER时可以用函数,如
INSERT INTO T1(NAME,BIRTHDAY ,GENDER) SELECT NAME,TO_DATE(?,'YYYY-MM-DD') AS BIRTHDAY , ? AS GENDER
FROM T2....
 
3.INSERT的表和SELECT的表只要字段相同,不需要进行类型转换.