Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Perbarui dan sisipkan ke satu tabel dari tabel lainnya

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

Ada beberapa masalah dengan pernyataan Gabung, jadi harus digunakan dengan hati-hati ..

Lebih lanjut saya sarankan, gunakan gabungan sebagai dua pernyataan DML terpisah seperti di bawah ini..

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

Alasan dikemukakan oleh Paul White di sini dalam jawaban yang terperinci ..



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jika saya memperbarui tampilan, apakah tabel asli saya akan diperbarui

  2. Bagaimana saya dapat meningkatkan Pernyataan SELECT SQL Server Alamat Surat ini?

  3. SQL:Menyimpan panduan

  4. Hirarki Teknologi Memori/Penyimpanan dan SQL Server

  5. Apakah ada cara untuk melakukan kueri lain dalam kueri penyisipan?