MERGE同步

本文介绍了一种使用SQL的MERGE语句来同步两个表数据的方法。通过实例演示了如何将源表中的数据更新到目标表中,包括插入新记录、更新匹配记录等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
CREATE TABLE Product 
    ( 
      ProductID VARCHAR(7NOT NULL 
                           PRIMARY KEY , 
      ProductName VARCHAR(100NOT NULL , 
      age int DEFAULT 0 
    ) ; 
 
INSERT  INTO Product 
VALUES  ( '11', '周杰伦', 50 ), 
        ( '12', '周星驰', 30 ) ; 
 
--目标表  
CREATE TABLE ProductNew 
    ( 
      ProductID VARCHAR(7NOT NULL 
                           PRIMARY KEY , 
      ProductName VARCHAR(100NOT NULL , 
      age int DEFAULT 0 
    ) ; 
 
INSERT  INTO ProductNew 
VALUES  ( '11', '周杰伦', 50 ), 
        ( '13', '成龙', 30 ) ; 
  
SELECT  *  FROM ProductNew 
SELECT  *  FROM Product 
MERGE ProductNew AS d 
    USING Product AS s 
    ON s.ProductID = d.ProductId 
    WHEN NOT MATCHED BY TARGET  
        THEN  
    INSERT  ( 
              ProductID , 
              ProductName , 
              age 
            ) 
          VALUES 
            ( s.ProductID , 
              s.ProductName , 
              s.age 
            ) 
    --WHEN NOT MATCHED BY SOURCE  
    --    THEN  
    --DELETE 
    WHEN MATCHED  
        THEN  
    UPDATE 
          SET 
            d.ProductName = s.ProductName , 
            d.age = s.age ; 
 
  
  
SELECT  *  FROM ProductNew 
SELECT  *  FROM Product 
return 
DROP TABLE  Product 
DROP TABLE ProductNew 
 
 
/* 
 
ProductID    ProductName    age 
11    周杰伦    50 
13    成龙    30 
 
ProductID    ProductName    age 
11    周杰伦    50 
12    周星驰    30 
 
ProductID    ProductName    age 
11    周杰伦    50 
12    周星驰    30 
13    成龙    30 
 
ProductID    ProductName    age 
11    周杰伦    50 
12    周星驰    30 
*/ 

转载于:https://www.cnblogs.com/qanholas/archive/2010/11/01/1866703.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值