Dit is geen MySQL-bug.
Een aggregatiequery retourneert één rij per groep die wordt aangetroffen. Zonder een group by
, er is één groep -- de hele tafel. Ik geef toe dat dit een beetje lastig is, omdat er nog steeds één groep is, zelfs als er geen rijen in de tabel staan.
Met een group by
, er is één rij per groep. Als er geen rijen in een groep zijn, wordt de groep niet weergegeven. In uw geval de vraag:
SELECT `a`, `b`, COUNT(*) as `c`
FROM `mytable`
WHERE `status` = 1
Retourneert één rij, met twee NULL
s gevolgd door 0
.
Dezelfde zoekopdracht met:
GROUP BY `a`,`b`
zal geen rijen retourneren omdat er geen rijen zijn om groepen te vormen.