Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obtendo resultados vazios para consulta MySQL 'COUNT'/'GROUP BY'


Este não é um bug do MySQL.

Uma consulta de agregação retornará uma linha por grupo encontrado. Sem um group by , há um grupo -- a tabela inteira. Admito que isso é um pouco complicado, porque ainda existe um grupo, mesmo quando não há linhas na tabela.

Com um group by , há uma linha por grupo. Se não houver linhas em um grupo, o grupo não aparecerá. No seu caso, a consulta:
SELECT `a`, `b`, COUNT(*) as `c`
FROM `mytable` 
WHERE `status` = 1

Retornará uma linha, com dois NULL s seguido por 0 .

A mesma consulta com:
GROUP BY `a`,`b`

não retornará nenhuma linha porque não há linhas para formar grupos.