【问题标题】:oracle select few columns from first table and insert (seq.nextval for one column + already selected columns) into second tableoracle 从第一个表中选择几列并将(一列的 seq.nextval + 已选择的列)插入到第二个表中
【发布时间】:2015-12-13 04:51:58
【问题描述】:

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

但不幸的是,该帖子并没有完全帮助我。

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

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      序列是数字 100 、 102 、 103 ...因此您将这些数字插入到 id 列中

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

      顺便说一句,我建议您修复列 id 的结构,如果您将其设为 ID number(4) 是一个好习惯,因为您的数字以 100 开头

      【讨论】:

        猜你喜欢
        • 2017-12-16
        • 1970-01-01
        • 1970-01-01
        • 2015-10-15
        • 1970-01-01
        • 1970-01-01
        • 2012-12-09
        • 1970-01-01
        • 2022-06-14
        相关资源
        最近更新 更多