sql >> Database >  >> RDS >> Sqlserver

Bijwerken en invoegen in de ene tabel vanuit een andere

Merge table2 as target
using table1  as source
on
target.id=source.id
When matched 
Then
update 
set target.id=source.id,
    target.name=source.name
When not matched by Target Then
INSERT (id, name) VALUES (id, name);

Er zijn enkele problemen met de Merge-instructie, dus deze moet worden gebruikt met voorzichtigheid ..

Verder raad ik aan om samenvoegen te gebruiken als twee afzonderlijke DML-instructies zoals hieronder..

insert into table2
select * from table1 t1 where not exists (select 1 from table2 t2 where t2.id=t1.id)

update t2
set 
t2.id=t1.id,
t2.name=t1.name
from 
table1 t1
join
table2 t2
on t1.id=t2.id

Redenen aangegeven door Paul White hier in zijn gedetailleerde antwoord ..



  1. FNDCPASS &AFPASSWD

  2. Hoe de primaire sleutel van integer naar serieel te converteren?

  3. Tabelruimte herstellen GEBRUIKERS werkt niet. Oracle-back-up

  4. Hoe gebruik ik de huidige datum in een HQL-query met een Oracle-database?