2017-01-23 80 views
1

我有两个表具有以下数据:选择返回NULL左加入

用户

user | online 
-------- ------- 
1  | 1 
2  | 0 
3  | 1 
4  | 1 
5  | 0 

照片

user_id | photo 
-------- ------- 
1  | photo1.jpg 
1  | photo2.jpg 
2  | photo3.jpg 
3  | photo4.jpg 

我要选择所有用户在线(在线= 1)用户是否有照片,显示计数或为空,或者为零,如果用户没有 相片。使用上面的表中,这将是这样的:

user_id | count 
-------- ------ 
1  | 2 
3  | 1 
4  | null 

回答

1

试试这个:

select 
    u.user user_id, 
    case when count(p.user_id) > 0 then count(p.user_id) end `count` 
from users u 
left join photos p on u.user = p.user_id 
where u.online = 1 
group by u.user; 

可以LEFT JOIN的照片给用户和组过来的用户找到计数。如果计数大于0,则获得计数或否则为空。