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

MySql count() para retornar 0 se nenhum registro for encontrado


Não há registro para o mês de January é por isso que você não está obtendo nenhum resultado. Uma solução que funciona é juntar uma subconsulta com uma lista de meses que você deseja que sejam mostrados na lista.
SELECT count(b.id) as totalRec
FROM   (
            SELECT 'January' mnth
            UNION ALL
            SELECT 'February' mnth
            UNION ALL
            SELECT 'March' mnth
        ) a
        LEFT JOIN post b
            ON a.mnth = DATE_FORMAT(b.date, '%M') AND
               year(b.date) =  '2013' AND 
               DATE_FORMAT(b.date, '%M') IN ('January', 'February', 'March') 
GROUP  BY year(b.date)-month(b.date) 
ORDER  BY b.date ASC

SAÍDA
╔══════════╗
║ TOTALREC ║
╠══════════╣
║        0 ║
║        7 ║
║        9 ║
╚══════════╝