2017-01-23 72 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,則獲得計數或否則爲空。