如何使用生成的序列 ID,从这个 table 和另一个之间的差异向 table 插入数据?
How to insert data to table from differences between this table and other one, using genereted sequence id?
我有两个表,我尝试插入从 SECOND_TABLE
到 FIRST_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_TABLE
和 FIRST_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)
我有两个表,我尝试插入从 SECOND_TABLE
到 FIRST_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_TABLE
和 FIRST_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)