To nie jest błąd MySQL.
Zapytanie agregujące zwróci jeden wiersz na każdą napotkaną grupę. Bez group by
, jest jedna grupa – cały stół. Przyznaję, że jest to trochę trudne, ponieważ wciąż jest jedna grupa, nawet jeśli w tabeli nie ma wierszy.
Z group by
, na grupę przypada jeden wiersz. Jeśli w grupie nie ma wierszy, grupa nie jest wyświetlana. W Twoim przypadku zapytanie:
SELECT `a`, `b`, COUNT(*) as `c`
FROM `mytable`
WHERE `status` = 1
Zwróci jeden wiersz, z dwoma NULL
s, po którym następuje 0
.
To samo zapytanie z:
GROUP BY `a`,`b`
nie zwróci żadnych wierszy, ponieważ nie ma wierszy do utworzenia grup.