Esto no es un error de MySQL.
Una consulta de agregación devolverá una fila por grupo que se encuentre. Sin un group by
, hay un grupo:toda la mesa. Admito que esto es un poco complicado, porque todavía hay un grupo, incluso cuando no hay filas en la tabla.
Con un group by
, hay una fila por grupo. Si no hay filas en un grupo, entonces el grupo no aparece. En su caso, la consulta:
SELECT `a`, `b`, COUNT(*) as `c`
FROM `mytable`
WHERE `status` = 1
Devolverá una fila, con dos NULL
s seguido de 0
.
La misma consulta con:
GROUP BY `a`,`b`
no devolverá filas porque no hay filas para formar grupos.