选择在左连接上返回NULL

时间:2017-01-23 17:41:29

标签: mysql sql

我有两张包含以下数据的表格:

用户

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),无论用户是否有照片,显示计数或null,如果用户没有照片,则为零。使用上面的表格,它将是这样的:

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

1 个答案:

答案 0 :(得分: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;

您可以将照片添加到用户并将其分组到用户上以查找计数。如果count大于0,则得到计数,否则为null。