SQL两表更新

Product(pid,name,amount,nowAmount):标识,名称,已有数量,当前数量
Trade(id,pid,operType,number):标识,产品标识,操作类型(入库:1,出库:0),数量

Product表中测试数据:

1苹果 1000
2桔子  500
Trade表中测试数据:
111432
21050
32120
42040
51130
62020

现要求一条SQL语句更新Product表中nowMount值
语句如下:
update  p  set  p.nowAmount  =  p.amount + t. number
from  Product  as  p ,( select  pid, sum ( case  operType  when   ' 0 '   then   number *  ( - 1 )   else   number   end number  
from  Trade  group   by  pid)  as  t  where  t.pid = s.pid
或者
update  p
set  p.nowAmount =  t. number + p.amount
from  Product  as  p 
inner   join  ( select  pid , sum ( case  operType  when   ' 0 '   then   number *  ( - 1 )   else   number   end as   number   from  Trade  group   by  pid)  as  t
on  p.pid = t.pid
两者一样执行后Product表:
1苹果 100512
2桔子 5010

转载于:https://www.cnblogs.com/ywkpl/archive/2008/03/11/1101276.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值