我有一个表A,一个表B,A和B的结构不同...有一个映射规则,把A表部分字段映射到B表...
映射规则有的是赋常量,有的是直接赋A表的值给B表,有的是根据某些条件把A表的值赋给B表,
还有是根据A表的值再去取其它表的值再赋给B表...开始我用游标,没什么难度,不过老板说表里的数据可能会过亿,用游标一条条循环太慢...
要求用一条SQL语句搞定...求达人赐教...
映射规则有的是赋常量,有的是直接赋A表的值给B表,有的是根据某些条件把A表的值赋给B表,
还有是根据A表的值再去取其它表的值再赋给B表...开始我用游标,没什么难度,不过老板说表里的数据可能会过亿,用游标一条条循环太慢...
要求用一条SQL语句搞定...求达人赐教...
insert into a
(select 1,(select b.b1,b.b2 from b where ....)) from dual;
有些可以通过DECODE解决..
但有的,比如说b.b1和X都是要插入的数据,
b.b1直接写就行了,而X是以b.b1为条件从另一张表取出来的数据...也就是说,在一条数据中,某些字段是以其它字段为条件再从另外的表的取出来的...
不知道这样能不能在一条SQL中实现...
A表 B表 C表 D表
a,b,c d,e f,g h,i
----- ----- ---- ----
A.a = B.d,
A.b = C.f where C.g = B.d,
A.c = D.h where D.i = B.e,这种映射关系能在一句SQL中实现否?
t1.b = (select max(t3.f) from c t3,b t4 where t3.g = t4.d and t1.j=t4.j),
t1.c = (select max(t3.f) from d t5,b t6 where t5.i = t6.e and t1.j=t6.j)
个人分析还是不同的规则一个sql语句,用几个sql语句来处理更合理一些。
在某些情况下,一条sql语句加上复杂的条件反而比多条sql语句更花费时间。
如果有统一的规划,甚至可以做成一个webservice