用JOIN&更新更新组

时间:2010-11-25 15:28:45

标签: mysql

我想使用与该用户关联的电子邮件数量更新所有用户记录。所以我有

| userid |名字| emailcount |

| userid | emaildata

我正在尝试制作单个UPDATE查询,该查询将使用该用户拥有的电子邮件数填充emailcount。

我尝试使用单个UPDATE但无法使其正常工作;我是否需要以某种方式使用子查询来执行此操作?

2 个答案:

答案 0 :(得分:2)

正如Elliot建议的那样,您可以删除列emailcount并使用如下查询动态生成值:

select userid, name, coalesce(ec.count, 0) as emailcount
from User u
left outer join (
    select userid, count(*) as count
    from Email
    group by userid
) ec on u.userid = ec.userid

答案 1 :(得分:1)

如果你想做这个动作我建议这个查询,但它没有在MySQL上测试,我现在没有访问权限。我希望这是正确的,如果没有请其他人可以纠正我

UPDATE user SET emailcount = (SELECT count(*) FROM emaildata WHERE emaildata.userid  user.userid)