mysql - 选择在左连接时返回 NULL

标签 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

最佳答案

试试这个:

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/

相关文章:

php - MySQL 一个单元格中存在多个数据

mysql - 使用sequelize 连接到aws rds 时连接被拒绝

如果数据库列中的值达到零值,则 C# 进行条件处理

sql - 如何更新 n 行分区中的日期列?

mysql - 如果列没有特定文本,如何更改列的值?

sql - 通过前缀连接,类似于 SQL 的 ON ... LIKE

java - MySQL语法错误异常 : Unknown column xxx in 'field list'

mysql - 从数据库中获取数据并过滤结果

c# - 什么更快?选择 [object] 或使用 linq 选择 new {[object].value1, [object].value2}

java - 如何在 Java 中执行在 where in 子句中单个变量中有多个值的 SQL 语句