Mil*_*osz 9 mysql sql join sql-update
我有两个表:
ITEMS数量和unit_price(id | name | order_id | qt | unit_price)和表ORDERS.
我想为相同的订单提供UPDATE表格orders并放置orders.total_price sum of multiplications qt*unit_price以获得订单的总价.
该SELECT上的项目表查询很简单,适用于相同的order_id内的所有项目给予罚款数额:
SELECT SUM(items.qt*items.unit_price) from items GROUP by items.order_id
Run Code Online (Sandbox Code Playgroud)
但我不能在我的ORDERS表中插入此值.我无法做到这一点:
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
Run Code Online (Sandbox Code Playgroud)
它返回 "Subquery returns more than 1 row"
我在这里发现了一个非常相似的问题,但答案对我来说也不起作用:
UPDATE orders SET orders.t_price = (SELECT SUM(items.qt*items.unit_price) from items WHERE orders.id = items.order_id)
Run Code Online (Sandbox Code Playgroud)
Mah*_*mal 20
您可以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]
Run Code Online (Sandbox Code Playgroud)