SQL - 使用 MERGE

摘要:SQL - 使用 MERGE


MERGE 语法是 SQL Server 2008 的新语法,可根据与来源数据表联结的结果,在目标数据表上执行插入、更新或删除作业。以下就来以范例的方式来实践...

Code:

--建立新数据表名为 大仓库
Create Table 大仓库
(
 品名 nvarchar(50),
 库存量 integer
);

--新增大仓库数据表数据
Insert into 大仓库
Values('中文书', 10),('英文书', 5),('法文书', 1);

--建立新数据表名为 进退货仓库
Create Table 进退货仓库
(
 品名 nvarchar(50),
 进退货量 integer
);

--新增进退货仓库数据表数据
Insert into 进退货仓库
Values('中文书', 5),('英文书', -5),('日文书', 6);

--查询 大仓库 与 进退货仓库 两数据表的数据
Select * From dbo.大仓库
Select * From dbo.进退货仓库

--将两张表 MERGE
--当两张表有数据 MERGE 时,且 库存量 加上 进退货量 等于零时,则删除数据
--当两张表有数据 MERGE 时,将 库存量 加上 进退货量 更新到 库存量
--当两张表没有数据 MERGE 时,将 进退货仓库 的数据新增到 大仓库 中
MERGE INTO 大仓库
   USING 进退货仓库
   ON 大仓库.品名 = 进退货仓库.品名
WHEN MATCHED AND (大仓库.库存量 + 进退货仓库.进退货量 = 0) THEN
   DELETE
WHEN MATCHED THEN
   UPDATE SET 大仓库.库存量 = 大仓库.库存量 + 进退货仓库.进退货量
WHEN NOT MATCHED THEN
   INSERT VALUES(进退货仓库.品名, 进退货仓库.进退货量);

--查询 MERGE 后的结果
Select * From dbo.大仓库
Select * From dbo.进退货仓库



参考:
SQL Server 2008 T-SQL 实战学堂 (作者:杨志强老师)
MERGE (Transact-SQL)
SQL 2008 T-SQL MERGE Operator
SQL MERGE语句组合表
使用SQL MERGE语句组合表

原文:大专栏  SQL - 使用 MERGE


猜你喜欢

转载自www.cnblogs.com/chinatrump/p/11514370.html