Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用合并进行更新_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 使用合并进行更新

Sql server 使用合并进行更新,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,我经常在工作中运行更新,但是,我想开始使用merge命令。 不过我还是不太熟悉 你会怎么翻译,或者至少给我一个使用MERGE的update语句的想法 BEGIN TRANSACTION T1 SELECT @@TRANCOUNT; WITH RADHE2 AS (SELECT ROW_NUMBER () OVER( PARTITION BY Assigned_To, Assigned_To_Descriptor /*,..*/

我经常在工作中运行更新,但是,我想开始使用merge命令。 不过我还是不太熟悉

你会怎么翻译,或者至少给我一个使用MERGE的update语句的想法

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

根据表中是否存在数据,在插入或更新之间进行选择时,“合并”非常有用。如果只执行更新,则可以继续执行更新。

根据表中是否存在数据,在插入或更新之间进行选择时,合并非常有用。如果只进行更新,则可以继续进行更新。

Merge是“Upsert”的别名。Aka,在同一个“调用”中更新和插入逻辑

如果您使用aka单词(即upsert),它将帮助您为正确的作业选择正确的工具。

Merge是“upsert”的aka。Aka,在同一个“调用”中更新和插入逻辑


如果你使用aka单词(即upsert),它将帮助你为正确的工作选择正确的工具。

如果它没有损坏,为什么要修复它?想要使用
合并的动机是什么?据我所知,使用合并没有明显的始终适用的优势。它的使用比常规更新更复杂,并且没有性能优势(?)。因此,只有当您希望为insert/update/delete创建一个逻辑操作,合并集合之间的差异(因此合并),或者需要在insert操作期间从联接表输出值等特殊情况时,才应切换到它。为什么要使用MERGE进行更新,尤其是当你不熟悉它的时候。。。感谢Martin、Kahn和Aaron的评论,非常感谢。一次性的,不需要复杂化。是的,有些情况下我需要一个输出,我使用了merge.advisions。如果它没有损坏,为什么要修复它?想要使用
merge
?据我所知,使用merge没有明显的总是适用的优点。它的使用比常规更新更复杂,并且没有性能优势(?)。因此,只有当您希望为insert/update/delete创建一个逻辑操作,合并集合之间的差异(因此合并),或者需要在insert操作期间从联接表输出值等特殊情况时,才应切换到它。为什么要使用MERGE进行更新,尤其是当你不熟悉它的时候。。。感谢Martin、Kahn和Aaron的评论,非常感谢。一次性的,不需要复杂化。是的,有些情况下,我需要使用merge.alives的输出。