mysql COUNT(CASE)返回条件相同的结果

时间:2018-06-23 15:01:41

标签: mysql

我有一个带有多个表联接的mySQL查询。在一个联接中,我试图将master_id为NULL的相关记录计数。

总共有1146条相关记录,no_master返回1146,而它应该返回0。我试过以下两项,都返回1146 ...那怎么可能?

COUNT(CASE WHEN ac.master_id IS NULL THEN 1 ELSE 0 END) AS 'no_master'

COUNT(CASE WHEN ac.master_id IS NULL THEN 0 ELSE 1 END) AS 'no_master'

1 个答案:

答案 0 :(得分:0)

您可以使用SUM

SUM(CASE WHEN ac.master_id IS NULL THEN 1 ELSE 0 END) AS 'no_master'
<=>
SUM(ac.master_id IS NULL) AS 'no_master'

COUNT不能区分0和1。


如果您想要COUNT,则可以使用:

COUNT(ac.master_id)
-- by default COUNT omit `NULL` values