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

sintaks untuk baris tunggal MERGE/upsert di SQL Server

saya akhirnya mendapatkan sintaks Upsert menggunakan MERGE di SQL Server 2008. Menggunakan apa yang inginkan Jacob yang harus dilakukan (sebuah Upsert):

IF EXISTS(SELECT * FROM member_topic WHERE mt_member = 0 AND mt_topic = 110)
BEGIN
    --update existing row
    UPDATE member_topic SET mt_notes = 'test'
    WHERE mt_member = 0
    AND mt_topic = 110
END
ELSE
BEGIN
    --insert new row
    INSERT INTO member_topic (mt_member, mt_topic, mt_notes)
    VALUES (0, 110, 'test')
END

MERGE yang setara sintaksnya adalah:

MERGE member_topic
USING ( 
    VALUES (0, 110, 'test')
) AS foo (mt_member, mt_topic, mt_notes) 
ON member_topic.mt_member = foo.mt_member 
   AND member_topic.mt_topic = foo.mt_topic
WHEN MATCHED THEN
   UPDATE SET mt_notes = foo.mt_notes
WHEN NOT MATCHED THEN
   INSERT (mt_member, mt_topic, mt_notes)
   VALUES (foo.mt_member, foo.mt_topic, foo.mt_notes)
; --A MERGE statement must be terminated by a semi-colon (;).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Memasukkan JSON ke dalam Tabel di SQL Server

  2. Tahu kapan harus mencoba lagi atau gagal saat memanggil SQL Server dari C#?

  3. Kait SQL Server – Kait Lain Yang Perlu Diketahui

  4. Cara Menggunakan Pernyataan GO di SQL Server Untuk Menyisipkan Catatan di Kolom Identitas - Tutorial SQL Server / T-SQL Bagian 42

  5. Adakah cara untuk menyisipkan atau memperbarui SQLBulkCopy jika ada?