有两个表
表一   goods
id    name     number
1     CX05     15
2     DX55     20 
3     UI99     8
表二  tempgoods
id    name     number
1     CX05     115
2     DX55     23 
3     PPPP     999
4     UI99     18
5     PO88     22
现在要把tempgoods表中的数据更新到goods表中,可以看到,第二个表中的number 字段相对于第一个表是变化的,ID和name的值不变,而且第二个表的数据要多于第一个表,从上面看就是id3和id5的纪录是新增的,更新的时候要把第一个表中number字段与第二个表不同的数据替换为第二个表中的数据,比如表一id=1的记录number=15,而表二中id=1的记录number=115,更新的时候要把表一的number更新为115,而且把第二个表中的多于第一个表中的纪录插入第一个表中(例如id=3和id=5是新增的),请问存储过程如何写????

解决方案 »

  1.   

    update 表一 set number=表二.number from 表二 where 表一.id=表二.id
    insert into 表一 select * from 表二 where id not in (select id from 表一)
      

  2.   

    update goods set number=tempgoods.number from tempgoods where goods.id=tempgoods.id
    insert into goods select * from tempgoods where id not in (select id from goods)
      

  3.   

    Create Procedure UpdataTableProc
    AS
    begin
    Update goods Set number = tempgoods.number
       From tempgoods where goods.id = tempgoods.idInsert into goods 
    Select * 
      From tempgoods 
         Where not exists (
                         Select * 
                            From goods 
                             Where goods.id = tempgoods.id)
    end