sql - mySQL :使用查询结果填充列
问题描述
我有一个表 ORDERS,其中包含一个名为 cache_total_price 的列,由每个客户使用。
+----+-----------+------------+-----------+------------------+
| id | client_id | date | reference | cache_total_price|
+----+-----------+------------+-----------+------------------+
| 1 | 20 | 2019-01-01 | 004214 | 0 |
| 2 | 3 | 2019-01-03 | 007120 | 0 |
| 3 | 11 | 2019-01-04 | 002957 | 0 |
| 4 | 6 | 2019-01-07 | 003425 | 0 |
我有另一个表 ORDERS_REFS ,其中有每个订单 ID 的总价格
+-----+-------------+------------+----------+---------------+------------+
| id | order_id | name | quantity | unit_price | total_price|
+-----+-------------+------------+----------+---------------+------------+
| 1 | 1 | Produit 19 | 3 | 49.57 | 148.71 |
| 2 | 1 | Produit 92 | 4 | 81.24 | 324.96 |
| 3 | 1 | Produit 68 | 2 | 17.48 | 34.96 |
| 4 | 2 | Produit 53 | 4 | 83.69 | 334.76 |
| 5 | 2 | Produit 78 | 6 | 5.99 | 35.94 |
我想将我的查询结果列 cache_total_price :
select sum(total_price) from orders_refs group by order_id;
结果 :
+--------------------+
| sum(total_price) |
+--------------------+
| 508.6299819946289 |
| 370.700008392334 |
| 132.3699951171875 |
| 2090.1800079345703 |
我已经尝试使用 Insert into select 或 update set 进行一些查询,但没有奏效:(
解决方案
如果您想一次更新所有订单,在 MySQL 中这样的子查询应该可以解决问题。您总是可以添加一个 WHERE 子句来一次做一个。
UPDATE ORDERS
SET cache_total_price = (
SELECT sum(total_price) from ORDERS_REF where order_id = ORDERS.id
)
推荐阅读
- google-chrome - HTTP 204 导致在 Chrome 中下载
- java - java.util.NoSuchElementException 在使用 java 中的 Apache poi 3.8 在 Excel 文件上写入图像时
- javascript - 403 禁止网站资源(js、png、css)但权限正常?
- python - 如果第 3 列与第 2 列匹配,python 比较 2 列并使用第 1 列中的值写入第 4 列
- javascript - Angular:TypeScript 表中的搜索栏
- tensorflow - 无法通过 LSTM 算法中的记录处理来跟踪记录以进行文本分类?
- docker - 为什么docker命令默认通过tcp连接守护进程
- python-3.x - 如何替换所有列值
- r - 从函数内绘制 xts 对象时可能出现的问题
- python - 如何使用来自 JSON 和命令行的数据对登录设置装置进行参数化