Mysql pdate 查询错误
本文关键字:错误 查询 pdate Mysql | 更新日期: 2023-09-27 18:33:17
我正在尝试使用 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;
这应该使用同一ams
的总grade
和更新 ams
的每条记录。如果特定ams
没有 2 个条目,则不会更新。