我有下面这两个表:
用户:

         id 7dexpn
=========== ==========
          1 0
          2 0
          3 0


user_pages:
        id     user_id 7dexpf
========== =========== ==========
       99           1 0
       98           2 1
       97           3 1
       96           3 1
       95           3 1
       94           2 0


我已成功将{(7dexpf)个标记的user_pages聚合}插入到user表(7dexpn)中,并由user_pages(user_id)与用户表(id)匹配
与此查询

update users u join
       (select user_id, count(*) as cnt
        from user_pages
        where `7dexpf` = 1
        group by user_id
       ) uu
       on uu.user_id = u.id
    set u.`7dexpn` = uu.cnt;


但是如果u。7dexpn = 0,查询不会将更新标志恢复为零

最佳答案

LEFT JOINCOALESCE()一起使用:

UPDATE users u
LEFT JOIN
     (SELECT user_id, COUNT(*) as cnt
      FROM user_pages
      WHERE `7dexpf` = 1
      GROUP BY user_id
     ) uu
 ON uu.user_id = u.id
SET u.`7dexpn` = COALESCE(uu.cnt,0);

07-28 10:54