2017-04-04 5 views
0

私はMySql 5.5.37を使用しています。私はMySQLでは、LEFT JOINと何もマッチしない場合、どのようにゼロを数えますか?

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

問題であり、ユーザーがログインしたことがない場合は、上記それでも、そのユーザのための1の数を返しているせいで、ユーザがログインした回数をカウントすることを意図したクエリを持っていますLEFT JOINは、一致する行がない場合にNULLを返します。ユーザーが一度もログインしていない場合はゼロになり、少なくとも1回はログインしていれば適切な数になるように変更するにはどうすればよいですか?

答えて

0

右テーブルのいずれかの列でカウントを使用できます。

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

ユーザーが結果にl.user_id = nullにログインしたことがなかったときに、これは動作するはず試みる回数に左共同で

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; 
0

リバース:

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; 
関連する問題