主页 > 知识库 > SQLServer 2008 Merge语句的OUTPUT功能

SQLServer 2008 Merge语句的OUTPUT功能

热门标签:沈阳智能外呼系统代理 海南自动外呼系统价格 电销机器人虚拟号码 舞钢市地图标注app 创业电销机器人 松原导航地图标注 九鹿林外呼系统怎么收费 沧州营销外呼系统软件 浙江地图标注
下面介绍一下把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函数用法详解

标签:台湾 西藏 公主岭 咸宁 日喀则 海口 商洛 宝鸡

巨人网络通讯声明:本文标题《SQLServer 2008 Merge语句的OUTPUT功能》,本文关键词  SQLServer,2008,Merge,语句,的,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《SQLServer 2008 Merge语句的OUTPUT功能》相关的同类信息!
  • 本页收集关于SQLServer 2008 Merge语句的OUTPUT功能的相关信息资讯供网民参考!
  • 推荐文章