如何从一个表到另一个表插入多个值?

时间:2016-01-19 19:57:44

标签: sql database oracle

在创建oracle查询时需要一些帮助。

我有一张表,我想从另一个表中插入数据。

我使用查询来获取此表中的帐号:

select AccountNumbers from Company;

它归还给我,

1234
2345
3456
4567
5678

现在我想将这些数据插入另一个表中。

Insert into tempTable (id, group, accountNumber) values (seq_mytemp_sequence, 'A', (select AccountNumbers from Company) );

我已经创建了正常的序列。但它没有说子查询返回多行是显而易见的。

我希望临时表中的数据以这样的方式插入,

1 A 1234
2 A 2345
3 A 3456
4 A 4567
5 A 5678

我尝试使用循环,但很难获取个人帐户,因为rownum不适用于除1以外的任何其他内容。

有人可以指导我如何做到这一点吗?感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

不应该是这样的:

Insert into tempTable (id, group, accountNumber) 
select seq_mytemp_sequence, 'A', AccountNumbers from Company ;

并不喜欢:

Insert into tempTable (id, group, accountNumber) 
values (seq_mytemp_sequence, 'A', (select AccountNumbers from Company) );

答案 1 :(得分:2)

您需要使用INSERT INTO ... SELECT,当您想要序列中的数字时,您需要.NEXTVAL

INSERT INTO tempTable (id, "group", accountNumber)
SELECT SEQ_MYTEMP_SEQUENCE.NEXTVAL,
       'A',
       AccountNumbers
FROM   Company

(另外,请不要给出像GROUP这样的关键词的列名,因为你必须用双引号将它们包装起来然后Oracle会对列名实施区分大小写)

答案 2 :(得分:0)

插入表名(Productid,“名称”,帐号) 从Producttable中选择ProductId,“ ABC”,“ XYZ”