Mysql 使用左外部联接返回计数,即使0

Mysql 使用左外部联接返回计数,即使0,mysql,sql,Mysql,Sql,即使计数为0,我也尝试返回所有指定的事件\u abr 以下是我的SQL查询: SELECT basketball_event_types.event_abr, count(*) value FROM basketball_event_types LEFT OUTER JOIN basketball_game_events on basketball_event_types.id = basketball_game_events.event_type_id

即使计数为0,我也尝试返回所有指定的事件\u abr

以下是我的SQL查询:

SELECT
    basketball_event_types.event_abr,
    count(*) value
FROM
    basketball_event_types
    LEFT OUTER JOIN basketball_game_events on basketball_event_types.id = basketball_game_events.event_type_id
    LEFT JOIN users on basketball_game_events.player_id = users.id
WHERE
    users.id = 198
AND
    basketball_game_events.game_id = 213
AND
    (basketball_event_types.event_abr = "TO" OR basketball_event_types.event_abr = "AST")
GROUP BY basketball_event_types.event_abr

然而,当我运行这个时,指定的用户(198)对于指定的游戏(213)有0个AST。我想弹出AST->0,但它就是不弹出。我尝试的两件大事是在左连接中添加外部连接,我还尝试使用ifnull(count(*),0)。两者都没有给出我想要的结果。

筛选需要在
on
子句中。您需要修复
计数()

注意这些变化:

  • 过滤被移动到子句上的
    ——两个过滤器都被移动到相应的子句
  • COUNT()
  • 表别名使查询更易于编写和读取
  • 中的
    比一系列
    条件更简单

我想补充一点,我已经看到了其他类似的问题,但到目前为止,没有人能够在这方面帮助我,只要允许,就接受这一正确答案。哇,谢谢你。让我免于将笔记本电脑扔出窗口Gordon,你能分享任何关于计数的文档吗?计数()计算最后一个左联接表中的值。@AnkitBajpai。嗯?我不明白
COUNT()
统计表达式中非空值的数量。表达式是上一个表中的一列。我想问的是,是否有任何地方记录了count只对上一个联接表的非空值进行计数。这是所有数据库的普遍规律吗?@AnkitBajpai。事实并非如此。答案中的语句指的是在这个查询中使用的
count()
——要做OP想要做的事情,它需要引用最后一个联接表中的一列。
SELECT bet.event_abr, COUNT(u.id) as value
FROM basketball_event_types bet LEFT JOIN
     basketball_game_events bge
     ON bet.id = bge.event_type_id AND bge.game_id = 213 LEFT JOIN
     users u 
     ON bge.player_id = u.id AND u.id = 198
WHERE bet.event_abr IN ('TO', 'AST')
GROUP BY bet.event_abr;