日期:2014-05-19  浏览次数:20501 次

SQL语句的问题
有两个表
表一       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是新增的),请问存储过程如何写????

------解决方案--------------------
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)
------解决方案--------------------
Create Procedure UpdataTableProc
AS
begin
Update goods Set number = tempgoods.number
From tempgoods where goods.id = tempgoods.id

Insert into goods
Select *
From tempgoods
Where not exists (
Select *
From goods
Where goods.id = tempgoods.id)
end