Ini bukan bug MySQL.
Kueri agregasi akan mengembalikan satu baris per grup yang ditemui. Tanpa group by
, ada satu grup -- seluruh tabel. Saya akui ini agak rumit, karena masih ada satu grup, meskipun tidak ada baris dalam tabel.
Dengan group by
, ada satu baris per grup. Jika tidak ada baris dalam grup, maka grup tersebut tidak muncul. Dalam kasus Anda, kueri:
SELECT `a`, `b`, COUNT(*) as `c`
FROM `mytable`
WHERE `status` = 1
Akan mengembalikan satu baris, dengan dua NULL
s diikuti oleh 0
.
Kueri yang sama dengan:
GROUP BY `a`,`b`
tidak akan mengembalikan baris karena tidak ada baris untuk membentuk grup.