gpt4 book ai didi

mysql - 嵌套连接的更新语句不起作用

转载 作者:行者123 更新时间:2023-11-29 00:46:32 24 4
gpt4 key购买 nike

我需要根据另一个表中某些值的总和来更新一个表中的多个记录。这是我的查询:

UPDATE aallinnot2 c SET c.Energ_Kcal = ( SELECT d.id1, SUM( c.Energ_Kcal) 
FROM aaingred a
LEFT JOIN aaweight b ON a.unit = b.uni
LEFT JOIN aallinnot2 c ON a.mfdfsds = c.NDB_No
LEFT JOIN aalinfsds d ON a.fsdsnum = d.id1
WHERE d.own_id =42
GROUP BY id1 )
WHERE c.NDB_No
IN ( SELECT DISTINCT `fsdsnum`
FROM `aaingred`
WHERE `usernum` LIKE '42'
)

MySQL said:

#1093 - You can't specify target table 'c' for update in FROM clause

不幸的是,我不知道如何在不引用目标表“c”的情况下获取我的值!有解决办法吗?

最佳答案

具有疯狂的表/列名称和难以理解的逻辑,这可能是我见过的最丑陋的查询。恭喜。 :)

我认为以下应该可行(或这种方法)。主要问题是理清分组依据表达式——您需要为数据库引擎提供一个数据集,其中目标表中的每一行都连接到一个包含该行更新值的集合。所以在这里,选择子查询中的新值,然后将该子查询连接到原始表。

编辑 修正了一些语法

    UPDATE 
(
SELECT d.id1, SUM (c.Energ_Kcal) AS Sum_Energ_Kcal
FROM aaingred a
LEFT JOIN aaweight b ON a.unit = b.uni
LEFT JOIN aallinnot2 c ON a.mfdfsds = c.NDB_No
LEFT JOIN aalinfsds d ON a.fsdsnum = d.id1
WHERE d.own_id =42
GROUP BY id1
) d
,aaingred a, aallinnot2 d
SET Energ_Kcal = d.Sum_Energ_Kcal
WHERE d.id1 = a.fsdsnum
AND a.mfdfsds = aallinnot2.NDB_No
AND c.NDB_No IN (
SELECT DISTINCT `fsdsnum`
FROM `aaingred`
WHERE `usernum` LIKE '42'
);

关于mysql - 嵌套连接的更新语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10338971/

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