Dies ist kein MySQL-Fehler.
Eine Aggregationsabfrage gibt eine Zeile pro gefundener Gruppe zurück. Ohne group by
, gibt es eine Gruppe – die gesamte Tabelle. Ich gebe zu, das ist ein bisschen knifflig, weil es immer noch eine Gruppe gibt, auch wenn es keine Zeilen in der Tabelle gibt.
Mit einem group by
, gibt es eine Zeile pro Gruppe. Wenn eine Gruppe keine Zeilen enthält, wird die Gruppe nicht angezeigt. In Ihrem Fall die Abfrage:
SELECT `a`, `b`, COUNT(*) as `c`
FROM `mytable`
WHERE `status` = 1
Gibt eine Zeile mit zwei NULL
zurück s gefolgt von 0
.
Dieselbe Abfrage mit:
GROUP BY `a`,`b`
gibt keine Zeilen zurück, da es keine Zeilen zum Bilden von Gruppen gibt.