下面的示例使用 MERGE 以更新或插入行的方式來修改 SalesReason 表。 當(dāng)源表中的 NewName 值與目標(biāo)表 ( SalesReason ) 的 Name 列中的值匹配時(shí),就會更新此目標(biāo)表中的 ReasonType 列。 當(dāng) NewName 的值不匹配時(shí),就會將源行插入到目標(biāo)表中。 此源表是一個派
下面的示例使用 MERGE 以更新或插入行的方式來修改 SalesReason 表。 當(dāng)源表中的 NewName 值與目標(biāo)表 (SalesReason) 的 Name 列中的值匹配時(shí),就會更新此目標(biāo)表中的 ReasonType 列。 當(dāng) NewName 的值不匹配時(shí),就會將源行插入到目標(biāo)表中。 此源表是一個派生表,它使用 Transact-SQL 表值構(gòu)造函數(shù)指定源表的多個行。 有關(guān)在派生表中使用表值構(gòu)造函數(shù)的詳細(xì)信息,請參閱表值構(gòu)造函數(shù) (Transact-SQL)。 該示例還說明了如何在表變量中存儲 OUTPUT 子句的結(jié)果,并且說明存儲結(jié)果之后如何通過執(zhí)行返回已插入和更新的行的計(jì)數(shù)的簡單選擇操作來匯總 MERGE 語句的結(jié)果。 <無> $velocityCount-->USE AdventureWorks2012; GO -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); MERGE INTO Sales.SalesReason AS Target USING (VALUES ('Recommendation','Other'), ('Review', 'Marketing'), ('Internet', 'Promotion')) AS Source (NewName, NewReasonType) ON Target.Name = Source.NewName WHEN MATCHED THEN UPDATE SET ReasonType = Source.NewReasonType WHEN NOT MATCHED BY TARGET THEN INSERT (Name, ReasonType) VALUES (NewName, NewReasonType) OUTPUT $action INTO @SummaryOfChanges; -- Query the results of the table variable. SELECT Change, COUNT(1) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change;
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com