记录一次oracle拼接sql记录

203 阅读1分钟

最近几天遇到一个需求很是令人蛋疼所以就采用了此方法,解决了循环插入,性能效率低的办法!

由于采用了oracle特有的查询入库方式:

INSERT INTO TABLE1(列名,列名)  SELECT 字段1,字段2 FROM TABLE2 WHERE 条件 ;

此语句查询表中的字段所对应的数据,然后一次性将查询的结果(不管是一条数据,还是多条数据)入库到TABLE 中,SELECT  后面查询的字段需要与入库的字段一致!

表A,B结构

 

A,B表结构一致,但是B表中的 f 字段数据需要从别处查询出来插入到B表中

方案有这么几种

1:查询A 依次入库B ,其中字段f需要拼接或者赋值给pojo

然后放入list集合,循环(或者)插入

缺点:写大量的代码,效率低下,循环插入频繁访问数据库。

2:利用oracle 特有查询方式: insert into ...select ...

拼接字段 f 此参数,利用占位符 ?传参,select 中拼接好查询的结果,然后insert 表B中即可,不管查询多少结果,一次性插入B表

 优点:省去大量的查询,设值,代码,不用pojo,list等循环插入,封装成对象,再通过pojo映射到字段。

SQL :   INSERT INTO A (a,b,c,d,e,f)  SELECT a,b,c,d,e,? FROM B  WHERE B.a = ?

仅从sql的角度,复制表数据即可。是不是很方便。