Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1126830
  • 博文数量: 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

SQLinsert 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 messagea55 messageb,1000 messagec from dual
  6  union all
  7  select 
'0001' ,'xiaoming' ,,112 33 ,897  from dual
  8  union all
  9  select 
'0001' ,'xiaoming' ,,84 57 ,233  from dual
 10  union all
 11  select 
'0001' ,'xiaoming' ,,56 67 ,777  from dual
 12  union all
 13  select 
'0001' ,'xiaoming' ,,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


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