Questo non è un bug di MySQL.
Una query di aggregazione restituirà una riga per gruppo rilevato. Senza un group by
, c'è un gruppo:l'intero tavolo. Ammetto che è un po' complicato, perché c'è ancora un gruppo, anche quando non ci sono righe nella tabella.
Con un group by
, c'è una riga per gruppo. Se non ci sono righe in un gruppo, il gruppo non viene visualizzato. Nel tuo caso, la query:
SELECT `a`, `b`, COUNT(*) as `c`
FROM `mytable`
WHERE `status` = 1
Restituirà una riga, con due NULL
s seguito da 0
.
La stessa query con:
GROUP BY `a`,`b`
non restituirà righe perché non ci sono righe per formare gruppi.