我有 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/