SQLServer 2008 Merge语句的OUTPUT功能
导读:收集整理的这篇文章主要介绍了SQLServer 2008 Merge语句的OUTPUT功能,觉得挺不错的,现在分享给大家,也给大家做个参考。 下面介绍一下把Output同2008的新T-...
收集整理的这篇文章主要介绍了SQLServer 2008 Merge语句的OUTPUT功能,觉得挺不错的,现在分享给大家,也给大家做个参考。 下面介绍一下把Output同2008的新T-SQL语句Merge组合使用的方法: 新建下面表:
复制代码 代码如下:
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语句为
复制代码 代码如下:
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;
结果集为:
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情况。如果只需要其中一种,可以用下面这种方法过滤:
复制代码 代码如下:
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函数array_merge用法一例(合并同类数组)
- SQLServer中merge函数用法详解
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: SQLServer 2008 Merge语句的OUTPUT功能
本文地址: https://pptw.com/jishu/631816.html