weixin_44157032 2022-02-24 15:33 采纳率: 68.8%
浏览 20
已结题

SQL:怎么计算一个表中的和并插入到另一个表中

现在我有两个表
表1:order

|id   | total|
|A001 |      |
|A002 |      |

表2:goods

|id   | price | order_id |
|B001 | 100   | A001     |
|B002 | 200   | A001     |
|B003 | 300   | A002     |

我该怎么样才能将表2(goods)中的price数据根据order_id求和并插入到表1中?
像这样:

|id   | total |
|A001 | 300  |
|A002 | 300  |
  • 写回答

2条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-02-24 15:51
    关注

    对已经存在的行的部分字段进行修改,这个叫更新,不叫插入。
    然后,你需要说明你使用的是什么数据库,不同数据库支持的写法是有所区别的。
    以下是在oracle数据库中的写法

    update order a set total=(select sum(price) from goods b where a.id=b.order_id) 
    where exists (select 1 from goods b where a.id=b.order_id);
    

    或者用plsql游标循环

    begin
    for rec in (select order_id, sum(price)  s from goods group by order_id) loop
    update order  a set a.total=rec.s where a.id=rec.order_id;
    end loop;
    end;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月4日
  • 已采纳回答 2月25日
  • 修改了问题 2月24日
  • 创建了问题 2月24日

悬赏问题

  • ¥15 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败