差异更新两个表

CREATE TABLE Temp_A
    (
      Emp_No VARCHAR(7) ,
      Emp_Name VARCHAR(20)
    )

CREATE TABLE Temp_B
    (
      Emp_No VARCHAR(7) ,
      Emp_Name VARCHAR(20)
    )

INSERT  INTO Temp_A
VALUES  ( ‘0000001‘, ‘张飞‘ )
INSERT  INTO Temp_A
VALUES  ( ‘0000002‘, ‘吕布‘ )
INSERT  INTO Temp_A
VALUES  ( ‘0000003‘, ‘关羽‘ )
INSERT  INTO Temp_A
VALUES  ( ‘0000004‘, ‘貂蝉‘ )
INSERT  INTO Temp_A
VALUES  ( ‘0000005‘, ‘孙权‘ )

INSERT  INTO Temp_B
        SELECT TOP 4
                *
        FROM    Temp_A

-- 使用Merge更新表
MERGE INTO Temp_B b
USING Temp_A a
ON a.Emp_No = b.Emp_No
--WHEN MATCHED
--THEN UPDATE SET b.Emp_Name=a.Emp_Name
WHEN NOT MATCHED THEN
    INSERT
    VALUES ( a.Emp_No, a.Emp_Name );

-- 使用EXISTS找出A表中存在, B表中不存在的
INSERT  INTO Temp_B
        SELECT  *
        FROM    Temp_A a
        WHERE   NOT EXISTS ( SELECT *
                             FROM   Temp_B b
                             WHERE  a.Emp_No = b.Emp_No )

-- 更新B表中和A表中工号一样的员工姓名 注意 更新的表需要用全名

UPDATE  Temp_B
SET     Temp_B.Emp_Name = a.Emp_Name
FROM    Temp_A a
WHERE   a.Emp_No = Temp_B.Emp_No
时间: 2024-10-11 17:10:20

差异更新两个表的相关文章

用一句sql语句更新两个表并可更新对应的字段的值

ACCESS 例子: insert into products (ProNumber,CASNumber,Cnname,Price,Enname,Baozhuang,Pinpai) select ProNumber,CASNumber,Cnname,Price,Enname,Baozhuang,Pinpai from product22 1.用一句sql从一个表里面取出数据导入另外一个表里面.这个对不同程序之间的数据转换很有用处,而且速度快,数据完整: insert into table1 (c

【PostgresSQL】同时更新两个表

UPDATE table1 SET column = value FROM table2 WHERE table1.column2 = table2.column2

2016.2.13 (年初六) oracle两张表update方法

A表customers和B表tmp_cust_city有3个相同字段, customer_id,city_name,customer_type 现要根据b表更新a表 更新一个字段情况: update customers a set city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id) where exists (select 1 from tmp_cust_city b wher

两张表A和B,各有一个字段,更新时间A.MODIFIED_TM和B.MODIFIED_TM,A表为主表,更新时间不为空,但是B表更新时间可能为空,现在要取A、B两表时间最新的那个,B.MODIFIED

问题描述: 两张表A和B,各有一个字段,更新时间A.MODIFIED_TM和B.MODIFIED_TM,A表为主表,更新时间不为空,但是B表更新时间可能为空,现在要取A.B两表时间最新的那个,B.MODIFIED_TM若为空就取A.MODIFIED_TM,例如: 表A ID    MODIFIED_TM 1     2013/3/10 18:07:12 2     2013/4/10 18:07:12 3     2013/5/10 18:07:12 表B ID    MODIFIED_TM 1

sql语句问题 通过联立两个表更新其中一个表的字段

============问题描述============ 有两个表a和b,a表中的字段有mobilehead(号码前7位),provincename,b表中有mobile(正常号码),provincename,需求是通过联立两个表,更新b表中provincename为空的数据. ============解决方案1============ 可以这样做 UPDATE    b SET            b.PN = a.PN FROM         a   WHERE     b.PN = '

SQL两表之间:根据一个表的字段更新另一个表的字段

1. 写法轻松,更新效率高: update table1 set field1=table2.field1, field2=table2.field2 from table2 where table1.id=table2.id 2. 常规方式,种写法相当于一个 Left join, 以外面的where为更新条数,如果不加where就是所有记录 update table1 set field1=(select top 1 field1 from table2 where table2.id=tab

Oracle 取两个表中数据的交集并集差异集合

Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集了 employee CODE NAME GENDER 001 Tom M 002 Jerry M 003 Ana F salary CODE SALARY 001 2800 002 2500 00

Oracle两张表关联批量更新其中一张表的数据

Oracle两张表关联批量更新其中一张表的数据 方法一(推荐): UPDATE 表2 SET 表2.C = (SELECT B FROM 表1 WHERE 表1.A = 表2.A) WHERE EXISTS (SELECT 1 FROM 表1 WHERE 表1.A = 表2.A); 尤其注意最后的外层where条件尤为重要,是锁定其批量更新数据的范围. 方法二: MERGE INTO 表2 USING 表1 ON (表2.A = 表1.A) -- 条件是 A 相同 WHEN MATCHED TH

数据库中两张表之间的数据同步实现思路(增加、删除、更新)Mysql、sqlserver

分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加:如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END 2.数据同步删除:如有