Dit zou alles moeten onthullen
SELECT 4=4, 3=4, 1 or null, 0 or null
Uitgang
1 | 0 | 1 | NULL
Feiten
-
COUNT telt de kolommen/expressies op die resulteren in NOT NULL. Alles wordt met 1 verhoogd, zolang het maar niet nul is. Uitzondering is COUNT(DISTINCT) waarbij het alleen wordt verhoogd als het nog niet is geteld.
-
Wanneer een BOOLEAN-expressie op zichzelf wordt gebruikt, geeft deze 1 of 0 terug.
-
Wanneer een boolean
OR
. is -ed met NULL, het is alleen NULL als het 0 is (false)
Aan anderen
Ja, als de telling de ENIGE gewenste kolom is, kan men WHERE value=4
. gebruiken maar als het een zoekopdracht is die de 4's evenals . wil tellen andere tellingen/aggregaten ophalen, dan werkt het filter niet. Een alternatief zou zijn geweest SUM(value=4)
, bijv.
SELECT sum(value=4)
FROM test