zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    C#基础小整理2
    面向过程之骑士飞行棋
    Winform基础程序和ADO.NET基础
    深刻的理解面向对象
    xargs 命令
    用 Graphviz + CodeViz可视化函数调用
    gdb调试器命令学习总结笔记 stl printer
    iconv 文件编码转换
    python urllib编码
    gcc g++ 参数
  • 原文地址:https://www.cnblogs.com/ztf20/p/12134200.html
Copyright © 2011-2022 走看看