Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mysql更新查询错误_C#_Mysql_Visual Studio 2010 - Fatal编程技术网

C# Mysql更新查询错误

C# Mysql更新查询错误,c#,mysql,visual-studio-2010,C#,Mysql,Visual Studio 2010,我正在尝试使用Visual Studio 2010更新我的mysql表“upproj”(c)。 我要执行以下查询: 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 claus

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

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
querybrowser上执行上一个查询时,我没有得到任何错误,但是我的项目需要从visualstudio执行这个查询


有没有办法解决这个问题

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

但是,如果使用
JOIN
,则可以完成“使用正在更新的表”的任务

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

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


这将更新
ams
的每个记录,并将该
ams
的总成绩更新为
grade
。如果特定的
ams
没有2个条目,则不会进行更新。

感谢您的编辑:)您的
更新
查询的确切目的是什么?如果这样做有效,它将更新表中的每一行,因为表中没有设置
WHERE
子句。请参见类似问题。更新的目的是将值设置为summ列。我这样做是因为VisualStudio没有使用count子查询中的“2”,而是使用vs project中给定的变量。很抱歉我的英语不好。非常感谢你的回答!你刚刚救了我:D
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;