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));
执行的结果是:单行子查询返回多个行。
请问是何原因呢? 展开
我认为这需要写存储过程的,为什么在你们眼中变得如此简单?难道是我哪里表达错误了?
例如:表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));
执行的结果是:单行子查询返回多个行。
请问是何原因呢? 展开
展开全部
INSERT INTO B SELECT '测试数据', id FROM A
解决问题。
要写完整点,那就是
INSERT INTO B (name, jlid) 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
另外,站长团上有产品团购,便宜有保证
关键是那些字段填什么值,如果是固定的,可以在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
另外,站长团上有产品团购,便宜有保证
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
语句如下:
insert into B as select * from A;
解释:B表的表结构必须和A表的 相同,否则无法插入。
可以优化语句:
insert into B(id,name) as select A.id,A.name from A;
insert into B as select * from A;
解释:B表的表结构必须和A表的 相同,否则无法插入。
可以优化语句:
insert into B(id,name) as select A.id,A.name from A;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
表已删除。
已用时间: 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语句就可以搞定。不明白的可以问我。
select id from A;
这样就可以了。
一条SQL语句就可以搞定。不明白的可以问我。
更多追问追答
追问
试验结果是:单场子查询返回多个行!
追答
没有问题的,多个行都会插入到B表中。如果你非要从A表选一行,然后再插入到B中的话,可以使用oracle的游标,游标可在存储过程中实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询