sql >> Base de Datos >  >> RDS >> Mysql

MySql count () para devolver 0 si no se encuentran registros

No hay registro para el mes de January es por eso que no está obteniendo ningún resultado. Una solución que funciona es unirse a una subconsulta que contiene una lista de meses que desea que se muestren en la 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

SALIDA

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