Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySql count(), um 0 zurückzugeben, wenn keine Datensätze gefunden werden

Es gibt keinen Datensatz für den Monat January Deshalb erhalten Sie kein Ergebnis. Eine funktionierende Lösung besteht darin, einer Unterabfrage beizutreten, die eine Liste der Monate enthält, die in der Liste angezeigt werden sollen.

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

AUSGABE

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