主頁 > 知識庫 > SQLServer 2008 Merge語句的OUTPUT功能

SQLServer 2008 Merge語句的OUTPUT功能

熱門標(biāo)簽:鐵路電話系統(tǒng) 服務(wù)外包 AI電銷 網(wǎng)站排名優(yōu)化 地方門戶網(wǎng)站 呼叫中心市場需求 Linux服務(wù)器 百度競價排名
下面介紹一下把Output同2008的新T-SQL語句Merge組合使用的方法:
新建下面表:
復(fù)制代碼 代碼如下:

CREATE TABLE Book(
ISBN varchar(20) PRIMARY KEY,
Price decimal,
Shelf int)

CREATE TABLE WeeklyChange(
ISBN varchar(20) PRIMARY KEY,
Price decimal,
Shelf int)

CREATE TABLE BookHistory(
Action nvarchar(10),
NewISBN varchar(20),
NewPrice decimal,
NewShelf int,
OldISBN varchar(20),
OldPrice decimal,
OldShelf int,
ArchivedAt datetime2)

SQL語句為
復(fù)制代碼 代碼如下:

MERGE Book AS B
USING WeeklyChange AS WC
ON B.ISBN = WC.ISBN
WHEN MATCHED AND (B.Price > WC.Price OR B.Shelf > WC.Shelf) THEN
UPDATE SET B.Price = WC.Price, B.Shelf = WC.Shelf
WHEN NOT MATCHED THEN
INSERT VALUES(WC.ISBN, WC.Price, WC.Shelf)
OUTPUT $action, inserted.*, deleted.*, SYSDATETIME()
INTO BookHistory;

結(jié)果集為:

SELECT * FROM BookHistory
GO

Action NewISBN NewPrice NewShelf OldISBN OldPrice OldShelf ArchivedAt
------ ------- -------- -------- ------- -------- -------- ---------------------------
UPDATE A 101 1 A 100 1 2007-11-25 14:47:23.9907552
INSERT C 300 3 NULL NULL NULL 2007-11-25 14:47:23.9907552

這里有Insert和Update兩種Output情況。如果只需要其中一種,可以用下面這種方法過濾:
復(fù)制代碼 代碼如下:

INSERT INTO Book(ISBN, Price, Shelf, ArchivedAt)
SELECT ISBN, Price, Shelf, GETDATE() FROM
(MERGE Book AS B
USING WeeklyChange AS WC
ON B.ISBN = WC.ISBN AND B.ArchivedAt IS NULL
WHEN MATCHED AND (B.Price > WC.Price OR B.Shelf > WC.Shelf) THEN
UPDATE SET Price = WC.Price, Shelf = WC.Shelf
WHEN NOT MATCHED THEN
INSERT VALUES(WC.ISBN, WC.Price, WC.Shelf, NULL)
OUTPUT $action, WC.ISBN, Deleted.Price, Deleted.Shelf
) CHANGES(Action, ISBN, Price, Shelf)
WHERE Action = 'UPDATE';
您可能感興趣的文章:
  • SQLServer2008的實用小道具 merger使用介紹
  • SQLServer 2008中SQL增強之三 Merge(在一條語句中使用Insert,Update,Delete)
  • php函數(shù)array_merge用法一例(合并同類數(shù)組)
  • SQLServer中merge函數(shù)用法詳解

標(biāo)簽:仙桃 黃山 湖南 崇左 蘭州 湘潭 銅川 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQLServer 2008 Merge語句的OUTPUT功能》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266