我有两个包含以下数据的表:
用户
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
最佳答案
试试这个:
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;
您可以将照片左连接到用户并将其按用户分组以查找计数。如果计数大于 0,则获取计数,否则为空。
关于mysql - 选择在左连接时返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41812380/