Oracle 12c - 如何将多个表的主键多次插入表中

时间:2017-11-17 22:03:00

标签: sql oracle sql-insert oracle12c

我有TABLE_A列:

table_id (PK) number;
table_1_id number;
table_2_id number;

TABLE_B

table_id number;
table_1_id number;
table_2_id number;
table_key number;
table_key_data varchar2(15);

我需要为每个缺失的TABLE_A.table_id插入两条记录到TABLE_B

这是以前数据的展示方式:

table_1_id table_2_id table_id table_key table_key_data
1          123        12345    1         1111
1          123        12345    2         ABC

所以如果TABLE_A有以下table_id

    12345
    23456
    34567    
..plus hundreds/thousands more
插入后

TABLE_B应如下所示:

table_1_id table_2_id table_id table_key table_key_data
1          123        12345    1         1111
1          123        12345    2         ABC
1          123        23456    1         1111
1          123        23456    2         ABC
1          123        34567    1         1111
1          123        34567    2         ABC
...plus remaining hundreds/thousands more.

每个table_key可能有超过2 table_id个。所以我需要这样的东西:

INSERT INTO TABLE_B (SELECT 1,123,TABLE_A.TABLE_ID, 1 for the first record and 2 for second record etc, CASE WHEN table_key = 1 THEN '1111' WHEN table_key = 2 THEN '1111111' END FROM TABLE_A WHERE TABLE_A.TABLE_ID NOT IN (SELECT table_id FROM TABLE_B)

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以运行2个INSERT语句。只需在WHERE语句中添加TABLE_A.TABLE_ID NOT IN(SELECT table_id FROM TABLE_B WHERE table_key =< 1或2,具体取决于您正在执行的插入>)。这样你就可以一次做一个。