2013年(350)
分类: Oracle
2013-04-25 13:08:47
看到一个很有意思的问题如下:
有三个表,表A , 表B, 表C。这3个表,都有4个字段,并且这4个字段名称都一样,
分别是:ID NAME CODE MESSAGE。
我现在要做以下操作:
每一个表都同时插入5条数据。其中这5条数据当中,前两列是一样的,第三列的数据是1--5,而最后一列的值是固定的。
例如:
表A: ID NAME CODE MESSAGE
0001 xiaoming 1 140
0001 xiaoming 2 112
0001 xiaoming 3 84
0001 xiaoming 4 56
0001 xiaoming 5 28
表B: ID NAME CODE MESSAGE
0001 xiaoming 1 55
0001 xiaoming 2 33
0001 xiaoming 3 57
0001 xiaoming 4 67
0001 xiaoming 5 45
表C: ID NAME CODE MESSAGE
0001 xiaoming 1 1000
0001 xiaoming 2 897
0001 xiaoming 3 233
0001 xiaoming 4 777
0001 xiaoming 5 1278
提问者自己觉见着写15条insert太没技术含量(呵呵,怎么叫有技术含量呢),希望看到其它的不同写法。就其需求而言我觉着insert语句应该是最简单最高效的写法,不过发贴者提出的问题倒是让我想起了自9i开始提供了insert all语法,借助该语法实现如下:
> create table tba (id varchar2(10),name varchar2(10),code number,message number);
Table created
SQL> create table tbb (id varchar2(10),name varchar2(10),code number,message number);
Table created
SQL> create table tbc (id varchar2(10),name varchar2(10),code number,message number);
Table created
SQL>
SQL> insert all
2 into tba values (id,name,code,messagea)
3 into tbb values (id,name,code,messageb)
4 into tbc values (id,name,code,messagec)
5 select '0001' id,'xiaoming' name,1 code,140 messagea, 55 messageb,1000 messagec from dual
6 union all
7 select '0001' ,'xiaoming' ,2 ,112 , 33 ,897 from dual
8 union all
9 select '0001' ,'xiaoming' ,3 ,84 , 57 ,233 from dual
10 union all
11 select '0001' ,'xiaoming' ,4 ,56 , 67 ,777 from dual
12 union all
13 select '0001' ,'xiaoming' ,5 ,28 , 45 ,1278 from dual
14 /
15 rows inserted
SQL> select * from tba;
ID NAME CODE MESSAGE
---------- ---------- ---------- ----------
0001 xiaoming 1 140
0001 xiaoming 2 112
0001 xiaoming 3 84
0001 xiaoming 4 56
0001 xiaoming 5 28
SQL> select * from tbb;
ID NAME CODE MESSAGE
---------- ---------- ---------- ----------
0001 xiaoming 1 55
0001 xiaoming 2 33
0001 xiaoming 3 57
0001 xiaoming 4 67
0001 xiaoming 5 45
SQL> select * from tbc;
ID NAME CODE MESSAGE
---------- ---------- ---------- ----------
0001 xiaoming 1 1000
0001 xiaoming 2 897
0001 xiaoming 3 233
0001 xiaoming 4 777
0001 xiaoming 5 1278
功能实现。
原链接如下:
http://www.itpub.net/thread-1118633-1-1.html