Mysql 每行计数的SQL更新

Mysql 每行计数的SQL更新,mysql,sql,count,sql-update,Mysql,Sql,Count,Sql Update,我正试图用另一个表的出现次数来更新一个表的字段,但到目前为止运气不好。这就是我所拥有的: Update S SET Hours = Hours + COUNT(S.ID) FROM S, E ON S.ID = E.ID WHERE S.ID = E.ID GROUP BY S.ID; 我被迫使用的程序具有糟糕的错误处理,并且只能向我提供语法错误的错误描述。我已经成功实现了一个select语句,它返回我想要的内容: Select COUNT(S.ID) FROM S, E WHERE S.I

我正试图用另一个表的出现次数来更新一个表的字段,但到目前为止运气不好。这就是我所拥有的:

Update S
SET Hours = Hours + COUNT(S.ID)
FROM S, E
ON S.ID = E.ID
WHERE S.ID = E.ID
GROUP BY S.ID;
我被迫使用的程序具有糟糕的错误处理,并且只能向我提供语法错误的错误描述。我已经成功实现了一个select语句,它返回我想要的内容:

Select COUNT(S.ID) 
FROM S, E
WHERE S.ID = E.ID
GROUP BY S.ID;

我是否遗漏了一些非常简单的内容?

您遗漏了更新的一部分。。op希望将计数添加到他的小时列中,而不仅仅是替换为发生次数,以防您想要修复它:)@JohnRuddell他提供的select查询(他声称提供了他想要的结果计数)并没有这样做。“小时数+计数”在他的“错误查询”中,他说这不起作用。在其他地方,他说他只想用计数来更新它。我一定误读了,因为我在想,当op说查询返回他想要的数据时,是他想添加到他的专栏中的数字。。。但它也可能意味着替换,所以我现在不需要了。我可以将它修改为小时=小时+(选择计数(*)来为我的程序工作。出于某种原因,编译器不允许使用下面的其他解决方案(可能是由于错误的解析-当我使用它作为工具时,我会很高兴)。
Update S
JOIN
(
  select id, COUNT(*) as cnt
  from e
  group by id
) TMP ON S.ID = TMP.ID
SET S.Hours = S.Hours + TMP.cnt
update s
   set hours =
       (select count(*) from e where e.id = s.id)