Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1280531
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

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


阅读(1102) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~