SQL Server 2008 的 Transact-SQL 语言增强(2)

本文由张洪举撰写,介绍了SQL Server 2008中Transact-SQL语言的增强特性,包括依赖性管理、合并操作与表相关插入等内容。
摘要由CSDN通过智能技术生成

作者:张洪举 Microsoft MVP

应用于:SQL Server 2008

日期:2008/9/1

 

6MERGE 语句

SQL Server 2008 中,可以使用 MERGE 语句在一条语句中根据与源表联接的结果对目标表执行 INSERTUPDATE DELETE 操作。如:使用一个语句有条件地在单个目标表中插入或更新行,如果目标表中存在相应行,则更新一个或多个列;否则,会将数据插入新行。使用该语句还可以同步两个表,根据与源数据的差别在目标表中插入、更新或删除行。

MERGE 语法包括如下五个主要子句:

MERGE 子句用于指定作为插入、更新或删除操作目标的表或视图。

USING 子句用于指定要与目标联接的数据源。

ON 子句用于指定决定目标与源的匹配位置的联接条件。

WHEN 子句用于根据 ON 子句的结果指定要执行的操作。

OUTPUT 子句针对更新、插入或删除的目标对象中的每一行返回一行。

其完整的语法格式如下:

[ WITH <common_table_expression> [,...n] ]

MERGE

        [ TOP ( expression ) [ PERCENT ] ]

        [ INTO ] target_table [ WITH ( <merge_hint> ) ] [ [ AS ] table_alias ]

        USING <table_source>

        ON <merge_search_condition>

        [ WHEN MATCHED [ AND <clause_search_condition> ]

            THEN <merge_matched> ]

        [ WHEN NOT MATCHED [ BY TARGET ] [ AND <clause_search_condition> ]

            THEN <merge_not_matched> ]

        [ WHEN NOT MATCHED BY SOURCE [ AND <clause_search_condition> ]

            THEN <merge_matched> ]

        [ <output_clause> ]

        [ OPTION ( <query_hint> [ ,...n ] ) ]   

使用下面的语句创建两个表:

USE AdventureWorks;

GO

IF OBJECT_ID (N'dbo.Purchases', N'U') IS NOT NULL

    DROP TABLE dbo.Purchases;

GO

CREATE TABLE dbo.Purchases (

    ProductID int, CustomerID int, PurchaseDate datetime,

    CONSTRAINT PK_PurchProdID PRIMARY KEY(ProductID,CustomerID));

GO

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值