mysql的更新与表连接 - 更新一个表与其他表的字段

问题描述:

的总和场我有两个表OrdersOrder_Details Order_Details表的order_id场作为外键Orders表的id_order表。mysql的更新与表连接 - 更新一个表与其他表的字段

我想更新price_total字段的Orders表格,其中表格的价格总和为Order_Details

我试着用下面的查询,但失败: -

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 

如何做一个查询?

感谢

+0

你没有speciy其列订单链接Order_Details.id_order – ajreal 2010-11-18 07:22:12

+0

@ajreal - 'Order_Details'表的'order_id'字段充当'Orders'表的'id_order'表的外键。在排队中应用更正 – 2010-11-18 07:25:33

你可以把它简化为

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 

+0

谢谢我今天也在努力处理子查询方法。 :)无论如何,请回答您是否可以更正加入和分组方法。 – 2010-11-18 07:46:28

+0

仍然收到相同的错误'#1064 - 你的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以便在第6行'GROUP BY Order_Details.id_order'附近使用正确的语法。 – 2010-11-18 10:44:52

+0

@sandeepan - group by不能与更新一起使用,对于错误信息抱歉 – ajreal 2010-11-18 10:58:09