【问题标题】:Mysql Update with table joins - update one table's field with sum of other table's fieldMysql Update with table joins - 用其他表字段的总和更新一个表的字段
【发布时间】:2011-05-11 21:07:31
【问题描述】:

我有两张桌子OrdersOrder_Details Order_Details 表的order_id 字段充当Orders 表的id_order 表的外键。

我想用来自Order_Details 表的价格总和来更新Orders 表的price_total 字段。

我尝试了以下查询但失败了:-

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

错误 -

#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

如何在一个查询中完成?

谢谢

【问题讨论】:

  • 您没有指定 Orders 中的哪一列链接到 Order_Details.id_order
  • @ajreal - Order_Details 表的order_id 字段充当Orders 表的id_order 表的外键。在问题中应用更正

标签: mysql join group-by sum


【解决方案1】:

你可以把它简化成

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;

更新分组

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

【讨论】:

  • 谢谢我今天也在努力使用子查询方法。 :) 无论如何,如果您也可以更正加入和分组方法,请回答。
  • 仍然出现同样的错误#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 6
  • @sandeepan - group by 不能与更新一起使用,抱歉信息错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 2018-03-06
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
相关资源
最近更新 更多