代码之家  ›  专栏  ›  技术社区  ›  Sandeepan Nath

Mysql Update with table joins-用另一个表的字段之和更新一个表的字段

  •  1
  • Sandeepan Nath  · 技术社区  · 14 年前

    我有两张桌子 Orders Order_Details 订单详细信息 桌子的 order_id 字段充当外键 命令 桌子的 id_order 桌子。

    我想更新 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
    

    如何在一个查询中完成?

    谢谢

    1 回复  |  直到 14 年前
        1
  •  4
  •   ajreal    14 年前

    你可以把它简化成

    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