Detta är inte en MySQL-bugg.
En aggregeringsfråga returnerar en rad per grupp som påträffas. Utan en group by
, det finns en grupp -- hela tabellen. Jag erkänner att det här är lite knepigt, eftersom det fortfarande finns en grupp, även när det inte finns några rader i tabellen.
Med en group by
, det finns en rad per grupp. Om det inte finns några rader i en grupp visas inte gruppen. I ditt fall, frågan:
SELECT `a`, `b`, COUNT(*) as `c`
FROM `mytable`
WHERE `status` = 1
Returnerar en rad, med två NULL
s följt av 0
.
Samma fråga med:
GROUP BY `a`,`b`
returnerar inga rader eftersom det inte finns några rader för att bilda grupper.