当使用count case且列为null时,如何返回类似“0”的值?

piok6c0g  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(331)

我用这个作为一个更大的查询的一部分

LEFT JOIN ( SELECT value, COUNT(CASE WHEN value = '1' THEN '1' END) AS sum )

问题是,由于这是一个左连接,因此并非所有结果都存在该值。我希望在值不存在时返回“0”。我试过用这样的方法:

LEFT JOIN ( SELECT value, COUNT(CASE WHEN value = '1' THEN '1' ELSE '0' END) AS sum )

但仍然返回null。如果值为null,或者在数据库中不存在该结果的值时,如何返回“0”?为什么我不能用 ELSE 如果值不是“1”,则返回“0”,是因为该值与“1”没有区别,而只是不存在吗?
谢谢您。

mspsb9vt

mspsb9vt1#

你不能在黑暗中这样做 LEFT JOIN ,因为不存在任何行--所以该值默认为 NULL .
相反,使用 COALESCE() 引用值时:

select coalesce(sum, 0)
. . .

相关问题