首页 > 解决方案 > 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 进行一些查询,但没有奏效:(

标签: sql

解决方案


如果您想一次更新所有订单,在 MySQL 中这样的子查询应该可以解决问题。您总是可以添加一个 WHERE 子句来一次做一个。

UPDATE ORDERS 
SET cache_total_price = (
    SELECT sum(total_price) from ORDERS_REF where order_id = ORDERS.id
)

推荐阅读