Oracle如何把从表A读取出来的若干条数据循环插入到B表中

如:表A有若干条数据,每条数据都有ID。表B有列字段为JLID,现需要把表A中ID的值插入到表B的JLID字段中,该如何写?(注:表A中有多少ID值,就需要向表B中插入多... 如:表A有若干条数据,每条数据都有ID。表B有列字段为JLID,现需要把表A中ID的值插入到表B的JLID字段中,该如何写?(注:表A中有多少ID值,就需要向表B中插入多少条数据)
我认为这需要写存储过程的,为什么在你们眼中变得如此简单?难道是我哪里表达错误了?
例如:表A(id,room);表B(name,jlid)。
表A中有两条数据:
第一条:123,a。第二条:128,c。
现在需要在表B中插入两条数据,如下:
第一条:测试数据,123。第二条:测试数据,128。
这两条的jlid字段中的内容都是从表A的id取出来的。按照楼下的意思语句是不是这样写:
insert into B values('测试数据',(select id from A));
执行的结果是:单行子查询返回多个行。
请问是何原因呢?
展开
 我来答
wangzhiqing999
2011-03-28 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3204万
展开全部
INSERT INTO B SELECT '测试数据', id FROM A
解决问题。

要写完整点,那就是
INSERT INTO B (name, jlid) SELECT '测试数据', id FROM A
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-02
展开全部
nto table3(number,str) select table1.number,table2.str from table1,table2 where table1.str='aaa' and table2.number=table1.number

关键是那些字段填什么值,如果是固定的,可以在SELECT里面用常量表示,比如:

insert into table3(number,str,aaa,ccc,vvv) select table1.number,table2.str,111,222,333 from table1,table2 where table1.str='aaa' and table2.number=table1.number
另外,站长团上有产品团购,便宜有保证
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
198901245631
2015-05-04 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1662万
展开全部
语句如下:
insert into B as select * from A;
解释:B表的表结构必须和A表的 相同,否则无法插入。
可以优化语句:
insert into B(id,name) as select A.id,A.name from A;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangcy3173
2011-03-30 · TA获得超过131个赞
知道答主
回答量:166
采纳率:0%
帮助的人:142万
展开全部
LIS@ motcore13> drop table wcy_t1;

表已删除。

已用时间: 00: 00: 00.21
LIS@ motcore13> create table wcy_t1(id number,room varchar2(30));

表已创建。

已用时间: 00: 00: 00.04
LIS@ motcore13> drop table wcy_t2;

表已删除。

已用时间: 00: 00: 00.07
LIS@ motcore13> create table wcy_t2(jlid number,name varchar2(30));

表已创建。

已用时间: 00: 00: 00.04
LIS@ motcore13> insert into wcy_t1 values(123,'a');

已创建 1 行。

已用时间: 00: 00: 00.01
LIS@ motcore13> insert into wcy_t1 values(128,'b');

已创建 1 行。

已用时间: 00: 00: 00.01
LIS@ motcore13> insert into wcy_t2(name,jlid) select '测试数据',id from wcy_t1;

已创建2行。

已用时间: 00: 00: 00.01
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-28
展开全部
insert into B(JLID)
select id from A;

这样就可以了。
一条SQL语句就可以搞定。不明白的可以问我。
更多追问追答
追问
试验结果是:单场子查询返回多个行!
追答
没有问题的,多个行都会插入到B表中。如果你非要从A表选一行,然后再插入到B中的话,可以使用oracle的游标,游标可在存储过程中实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式