gpt4 book ai didi

mysql - 复杂的 MySql 更新联接查询

转载 作者:行者123 更新时间:2023-11-29 07:59:38 24 4
gpt4 key购买 nike

有是我面临的问题的一个例子。数据库表与平常略有不同,但需要以这种方式设置。

商品:id、order_id、其他字段

Items_Drinks:id、饮料、其他字段

订单:id,其他字段

Orders_Drinks:id、饮料、其他字段

我需要一个更新查询,该查询将使用与 Orders_Drinks id 字段具有相同 order_id 的 Items_Drinks 饮料字段的总和来更新 Orders_Drinks 表。

Items: 1   1   ...
Items: 2 1 ...
Items_Drinks: 1 4 ...
Items_Drinks: 2 5 ...

Orders: 1 ...
Orders_Drinks: 1 9 ...

Orders_Drinks 目前是正确的,但如果我要更新 id 为 1 到 5 的 Items_Drinks,我需要一个更新命令来将 id 为 1 的 Orders_Drinks 更新为等于 10。

如果该命令能够更新 Orders_Drinks 的每条记录,那就最好了。

我知道我的数据库并不典型,但我的应用程序需要它。这是因为并非所有条目都需要 Drinks 表。 Drinks 表中有超过 5000 个字段,因此如果每条记录都包含这些详细信息,数据库就会无缘无故地增长和变慢。请不要告诉我重组数据库,这是需要的。

我目前正在我的 C# 程序中使用 for 循环来执行我需要的操作,但是使用 1 个命令将节省大量时间!

这是我最好的尝试,但它给出了“无效组函数”的错误。

update Orders_Drinks join Items on Items.order_id=Orders_Drinks.id join Items_Drinks on Items_Drinks.id=Items.id set Orders_Drinks.drinks=sum(Item_Drinks.drinks);

最佳答案

我想这就是你想要的。

编辑:

UPDATE `Order_Drinks` a 
SET a.`drinks` = (SELECT SUM(b.`drinks`) FROM `Items_Drinks` b INNER JOIN `Items` c ON (b.`id` = c.`id`) WHERE a.`id` = c.`order_id`)

对于 Order_Drinks 表,行 id 为 1 的总数应该为 9。

假设 Orders.id == Orders_Drinks.id 并且 Items.id == Items_Drinks.id。

关于mysql - 复杂的 MySql 更新联接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com