我来自 SQL Server 的代码:

SELECT ESTAGIO.SK_ESTAGIO, ISNULL(count(ESTAGIO.SK_ESTAGIO), 0) as how_many
 from ESTAGIO
 left join ESTAGIARIO
 on ESTAGIARIO.SK_ESTAGIO = ESTAGIO.SK_ESTAGIO
 group by
    ESTAGIO.SK_ESTAGIO

当表“ESTAGIARIO”中不存在“ESTAGIO.SK_ESTAGIO”时,它返回 1 而不是 0,我已经尝试使用 ISNULL()、NULLIF() 和 COALESCE(),但仍然找不到问题所在上面的查询在应该为 0 时返回 1。

最佳答案

您正在计算错误的字段。这样做,从外部连接表 ESTAGIARIO (不是来自 ESTAGIO )中获取字段:

SELECT ESTAGIO.SK_ESTAGIO, Count(ESTAGIARIO.SK_ESTAGIO) as how_many
 from ESTAGIO
 left join ESTAGIARIO
 on ESTAGIARIO.SK_ESTAGIO = ESTAGIO.SK_ESTAGIO
 group by
    ESTAGIO.SK_ESTAGIO

顺便说一句, count can never return null

关于sql - 当 Count(*) 结果为 Null 时返回 1 而不是 0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44155025/

10-13 05:04