Dette er ikke en MySQL-fejl.
En aggregeringsforespørgsel returnerer én række pr. gruppe, der stødes på. Uden en group by
, der er én gruppe -- hele bordet. Jeg indrømmer, at det er lidt vanskeligt, for der er stadig én gruppe, selv når der ikke er nogen rækker i tabellen.
Med en group by
, der er en række pr. gruppe. Hvis der ikke er nogen rækker i en gruppe, vises gruppen ikke. I dit tilfælde, forespørgslen:
SELECT `a`, `b`, COUNT(*) as `c`
FROM `mytable`
WHERE `status` = 1
Returnerer én række med to NULL
s efterfulgt af 0
.
Den samme forespørgsel med:
GROUP BY `a`,`b`
returnerer ingen rækker, fordi der ikke er nogen rækker til at danne grupper.