我使用的是mysql 5.5.37。我有一个查询,用来计算用户登录的次数

select u.id, IFNULL(count(*), 0)
FROM user u left join logins l
on u.id = l.user_id group by u.id;

问题是,如果一个用户从未登录过,那么上面的代码仍然会为该用户返回一个计数,这可能是因为当没有匹配的行时,左连接返回一个空值。如何更改此值,以便在用户从未登录时获得零,然后在用户至少登录一次时获得相应的计数?

最佳答案

您可以在右表的某一列上使用count。

select u.id,
    count(l.user_id)
from user u
left join logins l on u.id = l.user_id
group by u.id

关于mysql - 在MySQL中,如果LEFT JOIN不匹配,我如何计算零?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43215373/

10-09 23:55
查看更多