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

T-SQL Apakah mungkin untuk melakukan Pembaruan / Sisipkan dengan satu operasi cepat

SQL Server 2008 dan yang lebih baru memiliki pernyataan MERGE yang melakukan hal itu.

Lihat dokumen MSDN Books Online tentang MERGE untuk detailnya.

Pada dasarnya, Anda memerlukan empat hal:

  • sebuah sumber (tabel atau tampilan atau pernyataan SELECT sebaris)
  • sebuah target
  • a BERGABUNG kondisi yang menghubungkan keduanya
  • pernyataan untuk kasus ketika ada MATCH (baris ada di sumber dan target), NOT MATCHED (ketika baris belum ada di target) dan seterusnya

Jadi pada dasarnya Anda mendefinisikan sesuatu seperti:

MERGE (targettable) AS t
USING (sourcetable) AS s
ON (JOIN condition between s and t)
WHEN MATCHED THEN
   UPDATE SET t.Col1 = s.Col1, t.Col2 = s.Col2 (etc.)
WHEN NOT MATCHED THEN
   INSERT(Col1, Col2, ..., ColN) VALUES(s.Col1, s.Col2, ......, s.ColN)

Ini dilakukan sebagai satu pernyataan dan sangat dioptimalkan oleh SQL Server.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Bagaimana cara memanggil fungsi yang ditentukan pengguna (UDF) di server tertaut?

  2. Penyebaran cepat aplikasi Visual Studio 2010 dengan database SQL

  3. Mengapa saya tidak dapat menggunakan alias dalam kolom count(*) dan merujuknya ke dalam klausa yang memiliki?

  4. Cara Menemukan Semua Pelanggaran Batasan di Database SQL Server

  5. Ubah nama kolom saat menggunakan PIVOT SQL Server 2008