mysql - 当行不存在时显示计数值 0 MYSQL

标签 mysql sql count

我有 2 张 table ,游戏和投注。我想统计每场比赛的投注次数。但是,当没有针对该特定游戏 ID 进行投注时,我当前的查询不包含游戏。

这是我当前的查询:

SELECT g.*, 
       Count(*) AS participants 
FROM   game g, 
       bet b 
WHERE  b.game_id = g.id 
       AND USER = ? 
GROUP  BY g.id 

为了更清楚地说明,我的游戏表中有 3 行。游戏 1 有 4 个投注,游戏 2 有 2 个投注,并且投注表中没有与游戏 3 关联的行。结果应该是:

g1  4
g2  2
g3  0

我很感激任何帮助。

最佳答案

使用左连接并对赌注表中存在的列进行计数。对于未能加入投注表的游戏记录,将在预分组结果集中返回一行,该行在投注表的所有列中均为空。由于 count() 聚合函数不计算空值,因此对于未能加入的游戏记录,您将得到零。

select g.*, count(b.game_id) participants
from game g left join bet b on b.game_id=g.id
where user=?
group by g.id

关于mysql - 当行不存在时显示计数值 0 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59398568/

相关文章:

mysql - 当我使用 IN 操作时,mysql 如何运行查询

mysql - 如何在mysql中通过自定义属性进行排序

python - 是否可以在 Python 的 if 语句中使用变量值?

mysql从另一个表中选择不相等的值

带有连接的选择查询中的 MySQL 5 亿行表

sql - 如何在垂直设计的表格上实现搜索?

php - 网页设计PHP SQL查询问题

java - "Character Count Java Program"有问题

Powershell 哈希表计数和键属性重载

java - 查找并显示字符串中的连续重复组合