Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir des résultats vides pour la requête MySQL 'COUNT'/'GROUP BY'

Ce n'est pas un bogue MySQL.

Une requête d'agrégation renverra une ligne par groupe rencontré. Sans group by , il y a un groupe -- la table entière. J'avoue que c'est un peu délicat, car il y a toujours un groupe, même s'il n'y a pas de lignes dans le tableau.

Avec un group by , il y a une ligne par groupe. S'il n'y a pas de lignes dans un groupe, le groupe n'apparaît pas. Dans votre cas, la requête :

SELECT `a`, `b`, COUNT(*) as `c`
FROM `mytable` 
WHERE `status` = 1

Retournera une ligne, avec deux NULL s suivi de 0 .

La même requête avec :

GROUP BY `a`,`b`

ne renverra aucune ligne car il n'y a pas de lignes pour former des groupes.