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_fromON ( 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_fromON ( 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

浙公网安备 33010602011771号