我正在使用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;
问题是,如果用户从未登录过,上面仍然为该用户返回一个计数,可能是因为当没有匹配的行时LEFT JOIN返回NULL。我如何更改此项,以便在用户从未登录时获得零,然后在至少登录一次后获得相应的计数?
答案 0 :(得分:7)
您可以在右表的其中一列上使用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
答案 1 :(得分:1)
在左侧关节中,当用户从未在结果中登录l.user_id = null
时,请尝试这样做:
select
u.id,
sum(if(l.user_id is not null,1,0))
FROM user u left join logins l on u.id = l.user_id group by u.id;
答案 2 :(得分:0)
反转计数
select u.id, count(IFNULL(l.user_id , 0) )
FROM user u
left join logins l on u.id = l.user_id
group by u.id;