我经常在工作中运行更新,但是,我想开始使用merge命令。 不过我还是不太熟悉它。
您如何使用MERGE进行转换,或者至少让我了解以下更新声明?
BEGIN TRANSACTION T1
SELECT @@TRANCOUNT;
WITH RADHE2
AS (SELECT ROW_NUMBER () OVER( PARTITION BY Assigned_To, Assigned_To_Descriptor /*,..*/
/* Irrelevant columns removed for brevity*/
ORDER BY Rn_Create_Date DESC, Assigned_To DESC ) AS ID,
*
FROM PivCRM_Prod_Online_ED.dbo.Rn_Appointments
WHERE AN_ACTIVE = 1
AND rn_edit_date > '12 nov 2013'
AND ASSIGNED_TO = 0x000000000000074F
AND notes LIKE 'TAM_Indigo Base_Oct 2013')
--======================================================
--SETTING Appt_Date TO TOMORROW
UPDATE PivCRM_Prod_Online_ED.dbo.Rn_Appointments
SET Appt_Date = '14 NOV 2013'
FROM PivCRM_Prod_Online_ED.dbo.Rn_Appointments R
INNER JOIN RADHE2 R1
ON R.RN_APPOINTMENTS_ID = R1.Rn_APPOINTMENTS_ID
WHERE R1.ID = 1
--COMMIT TRANSACTION T1
答案 0 :(得分:3)
根据表中数据的存在,MERGE可用于在INSERT或UPDATE之间进行选择。如果您只进行更新,则可以继续进行更新。
答案 1 :(得分:1)
Merge是一个名为“Upsert”的人。 Aka,在同一个“呼叫”中更新和插入逻辑。
http://en.wikipedia.org/wiki/Upsert
如果你使用aka字(upsert),它会帮助你为正确的工作选择合适的工具。