Questo dovrebbe rivelare tutto
SELECT 4=4, 3=4, 1 or null, 0 or null
Uscita
1 | 0 | 1 | NULL
Fatti
-
COUNT somma le colonne/espressioni che restituiscono NOT NULL. Qualsiasi cosa aumenterà di 1, purché non sia nullo. L'eccezione è COUNT(DISTINCT) dove aumenta solo se non è già contato.
-
Quando un'espressione BOOLEAN viene utilizzata da sola, restituisce 1 o 0.
-
Quando un booleano è
OR
-ed con NULL, è NULL solo quando è 0 (falso)
Agli altri
Sì, se il conteggio è l'UNICA colonna desiderata, è possibile utilizzare WHERE value=4
ma se è una query che vuole contare i 4 oltre a recuperando altri conteggi/aggregati, il filtro non funziona. Un'alternativa sarebbe stata SUM(value=4)
, ad es.
SELECT sum(value=4)
FROM test