Oracle SQL:复制和更新表中的记录

问题描述 投票:1回答:1

我有一个表,其中包含30个“订单”记录。我正在尝试

  1. 复制这些记录,
  2. 更改几个字段以使这些记录成为“销售”记录,并且
  3. 将更新的记录追加到表。

[ID字段是连续的。我正在尝试使用以下无效的代码:

INSERT INTO TABLE_01 (
    ID, 
    CONTROL_CODE, 
    CODE, 
    RULE_CODE, 
    CAT, 
    INPUT_VALUES,
    UPDATER,
    UPDATE_TIMESTAMP) 
    SELECT 
        (SELECT MAX(ID) FROM TABLE_01) + 1,
        CONTROL_CODE, 
        CODE, 
        'SALES',
        CAT, 
        INPUT_VALUES,
        'ME',
        SYSDATE
    FROM
        TABLE_01
    WHERE
        ID IN (
            SELECT
                ID
            FROM
                TABLE_01
            WHERE
                RULE_CODE = 'ORDERS');

任何建议将不胜感激

sql oracle
1个回答
0
投票

问题是此代码

(SELECT MAX(ID) FROM TABLE_01) + 1,

每行返回相同的值。它不会进行一次插入,而是再次运行查询,再进行第二次插入,依此类推。相反,它只运行一次查询,然后批量插入所有返回的行。如果您自己运行select语句而没有插入,则您将明白我的意思。请尝试以下方法:

(SELECT MAX(ID) FROM TABLE_01) + rownum,
© www.soinside.com 2019 - 2024. All rights reserved.