Toto není chyba MySQL.
Agregační dotaz vrátí jeden řádek na skupinu, která je zjištěna. Bez group by
, existuje jedna skupina -- celá tabulka. Přiznávám, že je to trochu složitější, protože stále existuje jedna skupina, i když v tabulce nejsou žádné řádky.
S group by
, na skupinu je jeden řádek. Pokud ve skupině nejsou žádné řádky, skupina se nezobrazí. Ve vašem případě dotaz:
SELECT `a`, `b`, COUNT(*) as `c`
FROM `mytable`
WHERE `status` = 1
Vrátí jeden řádek se dvěma NULL
s následuje 0
.
Stejný dotaz s:
GROUP BY `a`,`b`
vrátí žádné řádky, protože neexistují žádné řádky pro vytvoření skupin.