如何使用生成的序列 ID,从这个 table 和另一个之间的差异向 table 插入数据?

How to insert data to table from differences between this table and other one, using genereted sequence id?

我有两个表,我尝试插入从 SECOND_TABLEFIRST_TABLE 的行。

我创建了两个表:

CREATE TABLE FIRST_TABLE(
    F_ID NUMBER(10) not null,
    F_NAME VARCHAR(8 BYTE) not null,
    F_DESCRIPTION NVARCHAR2(1000) not null
  );


  CREATE TABLE SECOND_TABLE(
    S_ID NUMBER(10) not null,
    S_NAME VARCHAR(8 BYTE) not null,
    S_DESCRIPTION NVARCHAR2(1000) not null
  );

我发现 SECOND_TABLEFIRST_TABLE 之间的差异:

select S_NAME,S_DESCRIPTION from SECOND_TABLE minus select F_NAME,F_DESCRIPTION from FIRST_TABLE;

我创建一个语句:

insert into FIRST_TABLE F_ID,F_NAME,F_DESCRIPTION (select * from SECOND_TABLE where not exists (select * from FIRST_TABLE where SECOND_TABLE.S_NAME = FIRST_TABLE.F_NAME));

但是这个语句复制 F_ID,我不知道如何改变这个语句不复制 F_ID,而是从序列 CSS_F 生成它。它应该看起来像:

insert into FIRST_TABLE (F_ID) values (CSS_F.nextval);

你能给我一个建议如何在这个语句中添加插入生成的 id 吗?

您可以 select 来自 second_table 的名称和描述列,并使用顺序插入 F_ID 列。

insert into FIRST_TABLE (F_ID,F_NAME,F_DESCRIPTION)
select CSS_F.nextval, S_NAME, S_DESCRIPTION
from SECOND_TABLE S
where not exists (select * from FIRST_TABLE where S.S_NAME = F_NAME)