sql server 2008 merge matched判定条件

Posted 可乐同学丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 2008 merge matched判定条件相关的知识,希望对你有一定的参考价值。

SQL Server 2008 开始支持 MERGE语句 

 
-- 源表
CREATE TABLE test_from (id INT, val VARCHAR(20));
 
-- 目标表
CREATE TABLE test_to (id INT, val VARCHAR(20));
 
-- 插入源表
INSERT INTO test_from VALUES (1, ‘A‘);
INSERT INTO test_from VALUES (2, ‘B‘);
 
-- 合并 源表到目标表
MERGE test_to USING test_from
ON ( test_to.id = test_from.id )    -- 条件是 id 相同
WHEN MATCHED THEN UPDATE SET test_to.val = test_from.val   -- 匹配的时候,更新
WHEN NOT MATCHED THEN INSERT VALUES(test_from.id, test_from.val) -- 源表有,目标表没有,插入
WHEN NOT MATCHED BY SOURCE THEN DELETE-- 目标表有,源表没有,目标表该数据删除.
 
-- 第一次检查 目标表数据.
SELECT FROM test_to;
 
id          val
----------- --------------------
          1 A
          2 B
 
 
-- 更新源表
UPDATE test_from SET val = ‘A2‘ WHERE id = 1;
-- 删除源表
DELETE FROM test_from WHERE id = 2;
-- 插入源表
INSERT INTO test_from VALUES (3, ‘C‘);
 
 
-- 合并 源表到目标表
MERGE test_to USING test_from
ON ( test_to.id = test_from.id )    -- 条件是 id 相同
WHEN MATCHED THEN UPDATE SET test_to.val = test_from.val   -- 匹配的时候,更新
WHEN NOT MATCHED THEN INSERT VALUES(test_from.id, test_from.val) -- 源表有,目标表没有,插入
WHEN NOT MATCHED BY SOURCE THEN DELETE-- 目标表有,源表没有,目标表该数据删除.
 
-- 再次检查 目标表数据.
SELECT FROM test_to;
 
id          val
----------- --------------------
          1 A2
          3 C

以上是关于sql server 2008 merge matched判定条件的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2008 merge matched判定条件

SQL Server 2008 MERGE 语法中的 USING 是啥?

sql server 2008中“Merge”子句的性能如何?

在 SQL Server 2008 R2 的 MERGE 语句中更新插入的记录

SQL Server2008中的MERGE SQL语句中的MERGE的全称是什麼?代表什麼意思? 有没有

sql server中的merge