Това трябва да разкрие всичко
SELECT 4=4, 3=4, 1 or null, 0 or null
Изход
1 | 0 | 1 | NULL
Факти
-
COUNT събира колоните/изразите, които се оценяват на NOT NULL. Всичко ще се увеличи с 1, стига да не е нула. Изключение е COUNT(DISTINCT), където се увеличава само ако вече не е преброен.
-
Когато БУЛЕВ израз се използва самостоятелно, той връща 1 или 0.
-
Когато булева е
OR
-ed с NULL, то е NULL само когато е 0 (false)
На други
Да, ако броят е ЕДИНСТВЕНАТА желана колона, може да се използва WHERE value=4
но ако това е заявка, която иска да преброи 4-те както и извличане на други бройки/агрегати, тогава филтърът не работи. Алтернатива би била SUM(value=4)
, напр.
SELECT sum(value=4)
FROM test