面试题之SQL

题目:存在如下两个表,TABLEA中ID为主键,PAY_ID为订单号;TABLEB中ID为主键,TOTALMONEY为某一个订单中所有商品的价钱的总和,需要将TABLEA中PAY_ID相同的所有数据的和更新到TABLEB中(例如:在TABLEA中PAY_ID为01的有两条数据,在TABLEB中将ID为01的TOTAL_MONEY更新为100+200,在TABLEB中将ID为02的TOTAL_MONEY更新为150+100,在TABLEB中将ID为03的TOTAL_MONEY更新为500)

TABLEA:

IDPAY_IDMONEY
101100
202150
301200
402100
503500

TABLEB:

IDTOTAL_MONEY
01NULL
02NULL
03NULL
4NULL
5NULL

在Oracle中sql如下:

UPDATE TABLEB SET TABLEB.TOTAL_MONEY=(SELECT TOTALMONEY FROM(select PAY_ID,sum(MONEY)TOTALMONEY from TABLEA group by PAY_ID)C WHERE C.PAY_ID=TABLEB.ID)WHERE ID IN (SELECT tablea.pay_id FROM tablea WHERE tableA.pay_ID = tableB.ID)


最后执行结果为在TABLEB中有如下数据


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值