SQLSERVER2008 新功能 MERGE
发布时间:2020-12-12 14:45:35 所属栏目:MsSql教程 来源:网络整理
导读:可以使用 MERGE 语句在一条语句中执行插入、更新或删除操作。MERGE 语句允许您将数据源与目标表或视图联接,然后根据该联接的结果对目标对象执行多项操作。 MERGE 语法包括五个主要子句:MERGE 子句用于指定作为插入、更新或删除操作目标的表或视图。USING
可以使用 MERGE 语句在一条语句中执行插入、更新或删除操作。MERGE 语句允许您将数据源与目标表或视图联接,然后根据该联接的结果对目标对象执行多项操作。 MERGE 语法包括五个主要子句: MERGE 子句用于指定作为插入、更新或删除操作目标的表或视图。 USING 子句用于指定要与目标联接的数据源。 ON 子句用于指定决定目标与源的匹配位置的联接条件。 WHEN 子句用于根据 ON 子句的结果指定要执行的操作。 OUTPUT 子句针对更新、插入或删除的目标对象中的每一行返回一行。--可以省略 MERGE 语句必须以 ; 结束。 ---案例(同步两个表的数据。即 存在则更新,否则插入数据) declare @T TABLE ( ProductID int,CustomerID int,CreateDate datetime); INSERT INTO @T VALUES(101,20120213,'20120213'),(102,(103,20120214,'20120213'); DECLARE @TT TABLE ( ProductID int,CreateDate datetime); INSERT INTO @TT VALUES(101,(109,20120218,'20120213');; MERGE @TT AS Target USING (SELECT CustomerID,ProductID,CreateDate FROM @T) AS Source ON (Target.ProductID = Source.ProductID AND Target.CustomerID = Source.CustomerID) WHEN MATCHED THEN --如果两表存在相同的记录,则更新@@TT中对应记录的日期为 @T中的日期 UPDATE SET Target.CreateDate = Source.CreateDate WHEN NOT MATCHED BY TARGET THEN --将存在于@T中但不存在于@@TT中的数据插入到@@TT中 INSERT (CustomerID,CreateDate) VALUES (Source.CustomerID,Source.ProductID,Source.CreateDate) WHEN NOT MATCHED BY SOURCE THEN---将存在于@@TT中但不存在于@T表中的数据删除 DELETE; select * from @TT (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql语句查询数据库中的表名/列名/主键/自动增长值实例
- sql-server-2008 – 更新SSIS OLEDB目标中的行
- distinct 多列问题结合group by的解决方法
- SQL性能方面,还有什么更好的:IF … ELSE子句或WHERE LIKE子
- SQLServer2008R2中创建多个SDE空间数据库
- SQL Server存储过程中编写事务处理的方法小结
- 数据库 – 为数据库应用程序留下审计跟踪/更改历史记录的有
- 数据库 – Oracle(ORA-02270):此列列表错误不匹配唯一或主
- 数据库中国际数据集的归一化/验证?
- sql – Oracle触发器ORA-04098:触发器无效并且重新验证失败