MySQL UPDATE with SELECT SUM from different table(MySQL UPDATE 与来自不同表的 SELECT SUM)
问题描述
我有两张桌子:ITEMS
带有数量和 unit_price (id | name | order_id | qt | unit_price)和表 ORDERS
.
I have two tables:
ITEMS
with quantities and unit_price (id | name | order_id | qt | unit_price)
and table ORDERS
.
我想UPDATE
表orders
并放入orders.total_price sum of multiplication of qt*unit_price
以获取相同订单的总价的订单.
I want to UPDATE
table orders
and place in orders.total_price sum of multiplications qt*unit_price
for the same orders to get total price of the order.
对 items 表的 SELECT
查询非常简单,并且可以很好地为同一 order_id 中的所有项目提供总和:
The SELECT
query on the items table is quite simple and works fine giving sums for all items within the same order_id:
SELECT SUM(items.qt*items.unit_price) from items GROUP by items.order_id
但是我不能在我的 ORDERS
表中插入这个值.我无法完成这项工作:
but I can't insert this value in my ORDERS
table. I couldn't make this work:
UPDATE orders, items SET orders.total_price = (SELECT SUM(items.qt*items.unit_price)
FROM items GROUP BY items.order_id) WHERE orders.id = items.order_id
它返回子查询返回多于1行"
我发现了一个非常相似的问题 此处 但答案对我也不起作用:
I found a very similar question here but the answer didn't work for me as well:
UPDATE orders SET orders.t_price = (SELECT SUM(items.qt*items.unit_price) from items WHERE orders.id = items.order_id)
推荐答案
你可以UPDATE
使用JOIN
两个表:
UPDATE Orders o
INNER JOIN
(
SELECT order_id, SUM(qt * unit_price) 'sumu'
FROM items
GROUP BY order_id
) i ON o.id = i.order_id
SET o.total_price = i.sumu
[WHERE predicate]
这篇关于MySQL UPDATE 与来自不同表的 SELECT SUM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:MySQL UPDATE 与来自不同表的 SELECT SUM


基础教程推荐
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- 带更新的 sqlite CTE 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01