2016-07-21 15 views
0

Ich habe zwei Tabellen und ich versuche, Zeilen von SECOND_TABLE bis FIRST_TABLE einzufügen.Wie werden Daten aus Differenzen zwischen dieser Tabelle und einer anderen in die Tabelle eingefügt, indem die genered sequence id verwendet wird?

ich erstellen zwei Tabellen:

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 
); 

fand ich Unterschiede zwischen SECOND_TABLE und FIRST_TABLE:

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

ich eine Aussage:

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));

aber diese Aussage kopieren F_ID, ich habe keine Idee, wie Sie diese Anweisung zu kopieren F_ID nicht kopieren, sondern aus Sequenz CSS_F generieren. Es sollte wie folgt aussieht:

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

Können Sie mir einen Rat geben, wie genereted id dieser Aussage hinzuzufügen Einfügen?

Antwort

2

Sie können die Spalten Name und Beschreibung aus der Tabelle second_table auswählen und die Sequenz zum Einfügen der Spalte F_ID verwenden.

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)