MySQL 使用 RIGHT JOIN 获取项目计数

标签 mysql sql count

我需要收集一位用户创建的所有帖子并获取加入这些帖子的人数。

我尝试过这个查询:

SELECT ads.id, ads.title, sign_ups.user_id
FROM sign_ups RIGHT JOIN ads ON ads.id = sign_ups.ad_id
WHERE advertiser_id=1

输出是:

id      title                  user_id
1      Something                  1
2      something else             2
3      another title             NULL
1      Something                  2

但我想要:

id      title               total
1      Something              2
2      something else         1
3      another title          0

但我想要:

id      title               total
1      Something              2
2      something else         1
3      another title          0

所以我尝试过这个:

SELECT ads.id, ads.title, count(sign_ups.user_id) AS total
FROM sign_ups
RIGHT JOIN ads ON ads.id = sign_ups.ad_id
WHERE advertiser_id =1

但输出不包括所有没有关注用户的 title 字段。所以结果看起来像这样:

id      title                  total
1      Something                 2
2      something else            1

想问一下,如何更改我的查询以获取所有想要的记录。

谢谢!

最佳答案

试试这个:

SELECT ads.id, ads.title, count(sign_ups.user_id) AS total
FROM sign_ups
RIGHT JOIN ads ON ads.id = sign_ups.ad_id
WHERE advertiser_id=1 AND sign_ups.user_id IS NOT NULL
UNION ALL
SELECT ads.id, ads.title, 0 AS total
FROM sign_ups
RIGHT JOIN ads ON ads.id = sign_ups.ad_id
WHERE advertiser_id=1 AND sign_ups.user_id IS NULL

关于MySQL 使用 RIGHT JOIN 获取项目计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553237/

相关文章:

mysql - 为什么 MySQL 不支持 'LIMIT & IN/ALL/ANY/SOME subquery'

MYSQL 无重复行 - 具有多个父级的多对多层次结构

php - 如何将行插入 mysql 数据库?

php - 在 MySQL 中通过单个查询获取今天、本周、本月和今年的数据?

php - 如何从数据库 MySQL 中的大量记录中删除特定字符?

python - 重复字符的计数,包括字符串python中的非重复字符

batch-file - 批处理文件计算字符串中字符的所有出现次数

php - 如何优化/合并这个 pdo 查询和这个计数查询?

php - 从mysql中选择

mysql - 如何使用 count() 返回包含多个表(联合)总计的单个记录?