11

我有两个表: ITEMS数量和 unit_price (id | name | order_id | qt | unit_price) 和 table ORDERS

我想为相同的订单放置UPDATE表格以获得订单的总价。ordersorders.total_price sum of multiplications qt*unit_price

对 items 表的SELECT查询非常简单,并且可以很好地为同一 order_id 中的所有项目提供总和:

SELECT SUM(items.qt*items.unit_price) from items GROUP by items.order_id

但我不能在我的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

它返回"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)
4

1 回答 1

22

您可以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]
于 2012-09-23T10:05:22.563 回答