Mysql更新查询错误

时间:2013-09-30 18:09:29

标签: c# mysql visual-studio-2010

我正在尝试使用mysqlVisual Studio 2010)更新我的c#表格“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执行此查询。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

如错误提示,您无法在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个条目,则不会更新。