题目:存在如下两个表,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:
ID | PAY_ID | MONEY |
1 | 01 | 100 |
2 | 02 | 150 |
3 | 01 | 200 |
4 | 02 | 100 |
5 | 03 | 500 |
TABLEB:
ID | TOTAL_MONEY |
01 | NULL |
02 | NULL |
03 | NULL |
4 | NULL |
5 | NULL |
在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中有如下数据