有员工表A,字段为员工编号,员工姓名
有员工表B,字段和表A一致
实现:
将表B中存在,A中不存在记录插入A表,
更新表A与表B中员工编号一致,员工姓名不一致的记录
删除表A中存在,表B中不存在的记录,

解决方案 »

  1.   

    insert into A
     select * from B where not exists(select 1 from A where 员工编号=B.员工编号)update a set a.员工姓名=b.员工姓名
    from A a,B b where a.员工编号=b.员工编号delete A from A where not exists(select 1 from B where 员工编号=A.员工编号)
      

  2.   

    insert into a select * from b where 员工编号 not in(select 员工编号 from a_update a set 员工姓名=b.员工姓名 from a join b on a.员工编号=b.员工编号delete from a where not exists(select 1 from b where 员工编号=a.员工编号)
      

  3.   

    insert into a select * from b where 员工编号 not in(select 员工编号 from a)update a set 员工姓名=b.员工姓名 from a join b on a.员工编号=b.员工编号delete from a where not exists(select 1 from b where 员工编号=a.员工编号)
      

  4.   


    CREATE TABLE EMPA
    (
    ID INT PRIMARY KEY NOT NULL,
    EMP_NAME VARCHAR(20)
    );
    CREATE TABLE EMPB
    (
    ID INT PRIMARY KEY NOT NULL,
    EMP_NAME VARCHAR(20)
    )
    INSERT INTO EMPA VALUES(1,'A');
    INSERT INTO EMPA VALUES(2,'B');
    INSERT INTO EMPA VALUES(3,'C');
    INSERT INTO EMPA VALUES(4,'E');
    INSERT INTO EMPA VALUES(5,'F');INSERT INTO EMPB VALUES(3,'E');
    INSERT INTO EMPB VALUES(4,'F');
    INSERT INTO EMPB VALUES(5,'G');SELECT * FROM EMPA;
    SELECT * FROM EMPB;MERGE EMPA AS TARGET
    USING (SELECT * FROM EMPB) AS SOURCE
    ON (TARGET.ID = SOURCE.ID)
    WHEN MATCHED 
    THEN UPDATE SET TARGET.EMP_NAME = SOURCE.EMP_NAME
    WHEN NOT MATCHED BY TARGET
    THEN
    INSERT (ID,EMP_NAME) VALUES(SOURCE.ID,SOURCE.EMP_NAME)
    WHEN NOT MATCHED BY SOURCE
    THEN DELETE ;SELECT * FROM EMPA;
    SELECT * FROM EMPB;
      

  5.   

    id      emp_name
    1 A
    2 B
    3 C
    4 E
    5 Fid      emp_name
    3 E
    4 F
    5 GIs this your result?
      

  6.   

    insert into A selec * from B where B.员工编号 Not IN (select A.员工编号 FROM A)update A SET A.员工姓名=B.员工姓名
    from A,B 
    where A.员工编号=B.员工编号delete from a 
    where A.员工编号 NOT IN (select 员工编号 from b)