Mysql Update with table joins - update one table's field with sum of other table's field

ぃ、小莉子 提交于 2019-12-30 11:54:10

问题


I have two tables Orders and Order_Details Order_Details tables's order_id field acts as foreign key to Orders table's id_order table.

I want to update the price_total field of Orders table with summation of prices from Order_Details table.

I tried with the following query but failed:-

Update Orders, Order_Details
  SET  Orders.price_total = sum(Order_Details.price)
 WHERE Orders.price_total=0
 GROUP BY Order_Details.id_order

Error -

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY Order_Details.id_order' at line 4

How to do it in one query?

Thanks


回答1:


You can simplify it to

Update Orders 
SET Orders.price_total = 
(
  SELECT 
    sum(Order_Details.price) 
  FROM Order_Details 
  WHERE 
    Orders.id_order=Order_Details.order_id
)
WHERE Orders.price_total=0;

updated for grouping

Update Orders, Order_Details
  SET Orders.price_total = sum(Order_Details.price)
WHERE 
  Orders.price_total=0 AND
  Orders.id_order=Order_Details.order_id    
GROUP BY Order_Details.id_order



来源:https://stackoverflow.com/questions/4212479/mysql-update-with-table-joins-update-one-tables-field-with-sum-of-other-table

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!