不管条件如何,mysql count(case)都返回相同的结果

huwehgph  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(579)

我有一个mysql查询,有几个表连接。在一个join中,我尝试将master\u id为null的相关记录计数。
总共有1146条相关记录,并且没有返回1146的\u master,但是它应该返回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'
whlutmcx

whlutmcx1#

你可以用 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

相关问题