gpt4 book ai didi

c# - Mysql pdate查询错误

转载 作者:行者123 更新时间:2023-11-29 13:33:26 24 4
gpt4 key购买 nike

我正在尝试使用 Visual Studio 2010 (c#) 更新我的 mysql 表“upproj”。我想执行以下查询:

string Query = " update tlog.upproj set summ=(select sum(grade) from tlog.upproj group by ams having count(*) =2); ";

但我收到错误

"You can't specify target table 'upproj' for update in FROM clause".

当我在 Mysql 查询浏览器上执行上一个查询时,我没有收到任何错误,但我的项目需要从 Visual Studio 执行此查询。

有什么办法可以解决这个问题吗?

最佳答案

正如错误提示的那样,您无法在 UPDATE 语句的 FROM 子句(在子查询中)中指定要更新的表;如果您尝试在 WHERE 子句中使用它,情况也是如此。

如果您使用JOIN,您就可以完成“使用您正在更新的表”的任务。

根据现有查询推断的架构,ams 字段对于集合分组来说是唯一的,因此您可以将其添加为子句的一部分。

尝试以下操作(未经测试):

UPDATE
tlog.upproj AS u1
JOIN (SELECT ams, SUM(grade) AS grade_sum FROM tlog.upproj GROUP BY ams HAVING COUNT(*) = 2) AS u2
ON u1.ams = u2.ams
SET
summ = u2.grade_sum;

这应该使用同一 amsgrade 总和来更新 ams 的每条记录。如果特定的 ams 没有 2 个条目,则不会更新。

关于c# - Mysql pdate查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19100902/

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