在创建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以外的任何其他内容。
有人可以指导我如何做到这一点吗?感谢您的帮助。
答案 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”