Oracle如何把从表A读取出来的若干条数据循环插入到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));
执行的结果是:单行子查询返回多个行。
请问是何原因呢?

第1个回答  2011-03-28
INSERT INTO B SELECT '测试数据', id FROM A
解决问题。

要写完整点,那就是
INSERT INTO B (name, jlid) SELECT '测试数据', id FROM A本回答被提问者采纳
第2个回答  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
另外,站长团上有产品团购,便宜有保证
第3个回答  2015-05-04
语句如下:
insert into B as select * from A;
解释:B表的表结构必须和A表的 相同,否则无法插入。
可以优化语句:
insert into B(id,name) as select A.id,A.name from A;本回答被网友采纳
第4个回答  2011-03-30
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
第5个回答  2011-03-28
insert into B(JLID)
select id from A;

这样就可以了。
一条SQL语句就可以搞定。不明白的可以问我。追问

试验结果是:单场子查询返回多个行!

追答

没有问题的,多个行都会插入到B表中。如果你非要从A表选一行,然后再插入到B中的话,可以使用oracle的游标,游标可在存储过程中实现。

追问

不用返回结果集,个人认为用不着游标。按道理应该用数组之类的东西,写个循环什么的,把读到的值一个一个的插入。

追答

可以啊,存储过程以及pro*c编程中都可以声明数组变量,将多结果集写到一个数组变量里。

追问

我需要最终的答案。

追答

如果你不急的话,明天给你,下班了。

Oracle如何把从表A读取出来的若干条数据循环插入到B表中
要写完整点,那就是 INSERT INTO B (name, jlid) SELECT '测试数据', id FROM A

在oracle中如何将一个表中所有数据加到另一个表中
1、导出所有:exp 用户名\/密码@数据库名称 file=导出文件存放路径及文件名 full=y全部导出eg:exp admin\/123456@p2p file=d:\\p2p.dmp full=y。2、使用命令行导出指定的表,不导出全部,使用命令如下: exp system\/manager@TEST file=d:\\daochu.dmp tables=(table1,table2) ,只导出table1和ta...

oracle 先用游标一行一行的读 把读出来的字段添加到另外一张表里面 怎...
--从Table_a取出三个字段 Cursor Select_Table_a Is Select A.Column1, A.Column2, A.Column3 From Table_a;Begin --循环读取 For Ls_1 In Select_Table_a Loop --将读取的资料insert到Table_b中(字段的类型要一致)Insert Into Table_b (Column_B1, Column_B2, Column_B3)Values (Ls_1...

Oracle 中 如果想把A表中的数据插入到B表中,通过外键,如何插入?
字段匹配的前提下,INSERT INTO B [此处填写,选择插入所需字段] SELECT [此处填写A表需要插到B表的字段] FROM A WHERE 后面加插入条件 范例:INSERT INTO Future SELECT Substring(a.sDeptNO,1,1)+'处',Sum(a.nFutureSaleAmount)FROM Future a,tDept b WHERE a.sDeptNO = b.sDeptNO GROUP BY...

oracle 如何将 A表的数据 移到 B 表中去?
首先,你要用有足够权限的账户登录plsql insert into B (select * from A);如果是不同用户的表复制 insert into user1.B(select * from user2.A)

sql语句 怎么从一张表中查询数据插入到另一张表中
可用insert into语句将查询的数据插入到另一张表。前提:查询的字段要与被插入表的字段属性一致及长度一致,否则,在插入过程中容易报错。使用数据库:Oracle 步骤:1、罗列下源表的数据。2、目标表结构如图,其中name字段与favourite字段均与student表的长度和类型一致。3、执行sql语句如下:insert into ...

sql语句 怎么从一张表中查询数据插入到另一张表中
查询的数据插入到另一张表中,分为两种情况,一种是目标表不存在,另一种是目标表存在。工具:Oracle 10g 源表数据:情况一(目标表不存在,创建表名为t1的表,将person表中全部数据插入):执行语句:create table t1 as select * from person;情况二(目标表t1存在,将person表中agegrade为年轻人...

oracle中查询出A表的结果,并将A表中的数据插入到B表中,对于A表中已经...
根据唯一编号(或者收唯一性字段)not exists 然后插入就可以了吧。

oracle 怎么用sql语句把一个表中相应字段的数据复制到另一表中的相应...
你意思是要建立一个中间表维持两表之间的多对多的复杂该系是吧?你试试这个语句:insert into C(a1,b1,a2,b2,) select ... from ...写上你所要关联的数据。一般的需求不会是笛卡尔集是吧。也就是说不可能每个数据都对应完所有数据。

Oracle数据库中怎样把A表的内容复复制到B表?
语法格式:CREATE TABLE table_name AS SELECT FROM table_name;通过 子查询 新建表,创建表的同时记录也加入~子查询可以复杂,只有 NOT NULL 约束可以复制,其他约束自行添加~谢谢~!

相似回答