MERGE语句

来源:互联网 发布:游戏程序员的职业诉求 编辑:程序博客网 时间:2024/06/07 01:15
SQL Server 2008 开始支持 MERGE语句
-- 源表
CREATE TABLE test_from (id INT, valVARCHAR(20));
-- 目标表
CREATE TABLE test_to (id INT, valVARCHAR(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 UPDATESET test_to.val = test_from.val-- 匹配的时候,更新
WHEN NOT MATCHED THENINSERT VALUES(test_from.id, test_from.val)-- 源表有,目标表没有,插入
WHEN NOT MATCHED BYSOURCE THEN DELETE; -- 目标表有,源表没有,目标表该数据删除.
-- 第一次检查 目标表数据.
SELECT * FROM test_to;
搜索
id val
----------- --------------------
1 A
2 B
-- 更新源表
UPDATE test_from SET val ='A2' WHEREid = 1;
-- 删除源表
DELETE FROM test_from WHEREid = 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 UPDATESET test_to.val = test_from.val-- 匹配的时候,更新
WHEN NOT MATCHED THENINSERT VALUES(test_from.id, test_from.val)-- 源表有,目标表没有,插入
WHEN NOT MATCHED BYSOURCE THEN DELETE; -- 目标表有,源表没有,目标表该数据删除.
-- 再次检查 目标表数据.
SELECT * FROM test_to;
id val
----------- --------------------
1 A2
3 C


0 0
原创粉丝点击