oracle从第一个表中选择几列,并将(一列的seq.nextval +已选择的列)插入到第二个表中

时间:2015-09-16 14:22:59

标签: sql oracle

  

PRODUCT1表:

CREATE TABLE PRODUCT1(PRD_ID INTEGER , PRD_NAME VARCHAR2(10) );
  

PRODUCT2表:

CREATE TABLE PRODUCT2(PRD_ID INTEGER , PRD_NAME VARCHAR2(10) );
  

产品序列:

CREATE SEQUENCE PRODUCT_SEQ  START WITH 100;

假设我在PRODUCT1和PRODUCT2中已有少量记录(少于100个)。

我正在使用上面的表和序列尝试以下查询:

INSERT INTO PRODUCT2 (PRODUCT_SEQ.NEXTVAL, PRD_NAME) SELECT PRD_NAME FROM PRODUCT1 ;
  

错误报告:SQL错误:ORA-00947:值不够

实际上,我已经通过以下帖子解决了我的问题:

select from one table, insert into another table oracle sql query

但不幸的是,那篇文章并没有完全帮助我。

如果您需要我方提供更多详细信息,请告诉我,以便我能提供。

2 个答案:

答案 0 :(得分:1)

序列为数字100,102,103 ......因此您可以在id列中插入这些数字

INSERT INTO PRODUCT2 
(PRD_ID, PRD_NAME)
 SELECT PRODUCT_SEQ.NEXTVAL , PRD_NAME FROM PRODUCT1 ;

顺便说一下,我建议您修改列ID的结构,如果您将其设为ID number(4),这是一个很好的做法,因为您的数字以100开头

答案 1 :(得分:0)

您的insert语句应该在表中包含列名。然后,您应该从适当的序列和表中选择值。

INSERT INTO PRODUCT2 (PRD_ID, PRD_NAME) 
SELECT PRODUCT_SEQ.NEXTVAL, PRD_NAME FROM PRODUCT1