mysql - primary - هل تقدم خدمة SQL Server أي شيء مثل على زر التشغيل على DUBLICATE مفتاح التحديث



sql-server tsql (3)

لا يوجد ما يعادل قيمة DUPLICATE KEY UPDATE ، لكن MERGE و MEN MATCHED قد تعمل من أجلك

إدراج وتحديث وحذف البيانات باستخدام MERGE

https://ffff65535.com

في MySQL ، إذا قمت بتحديد ON DUPLICATE KEY UPDATE وتم إدراج صف يؤدي إلى تكرار قيمة في فهرس فريد أو PRIMARY KEY ، فيتم إجراء UPDATE للصف القديم. على سبيل المثال ، إذا تم تعريف العمود a على أنه UNIQUE ويحتوي على القيمة 1 ، فإن الجملتين التاليتين لهما نفس التأثير:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

UPDATE table SET c=c+1 WHERE a=1;

لا أعتقد أنني صادفت أي شيء مماثلاً في T-SQL. هل يقدم SQL Server أي شيء يمكن مقارنته بخاصية ON ON DUPLICATE الخاصة بـ MySQL؟


لقد فوجئت بعدم احتواء أي من الإجابات الواردة في هذه الصفحة على مثال لاستعلام فعلي ، لذلك هنا تذهب:

مثال أكثر تعقيدًا على إدخال البيانات ثم التعامل مع العناصر المكررة

MERGE
INTO MyBigDB.dbo.METER_DATA WITH (HOLDLOCK) AS target
USING (SELECT
    77748 AS rtu_id
   ,'12B096876' AS meter_id
   ,56112 AS meter_reading
   ,'20150602 00:20:11' AS local_time) AS source
(rtu_id, meter_id, meter_reading, time_local)
ON (target.rtu_id = source.rtu_id
  AND target.time_local = source.time_local)
WHEN MATCHED
  THEN UPDATE
      SET meter_id = '12B096876'
         ,meter_reading = 56112
WHEN NOT MATCHED
  THEN INSERT (rtu_id, meter_id, meter_reading, time_local)
      VALUES (77748, '12B096876', 56112, '20150602 00:20:11');





tsql