Isso deve revelar tudo
SELECT 4=4, 3=4, 1 or null, 0 or null
Saída
1 | 0 | 1 | NULL
Fatos
-
COUNT soma as colunas/expressões que são avaliadas como NOT NULL. Qualquer coisa será incrementada em 1, desde que não seja nula. A exceção é COUNT(DISTINCT) onde ela é incrementada somente se ainda não for contada.
-
Quando uma expressão BOOLEAN é usada sozinha, ela retorna 1 ou 0.
-
Quando um booleano éOR
-ed com NULL, é NULL somente quando é 0 (falso)
Para outros
Sim, se a contagem for a ÚNICA coluna desejada, pode-se usar
WHERE value=4
mas se for uma consulta que queira contar os 4 assim como recuperando outras contagens/agregados, o filtro não funciona. Uma alternativa seria SUM(value=4)
, por exemplo. SELECT sum(value=4)
FROM test