sql >> Database teknologi >  >> RDS >> Mysql

MySql count() for at returnere 0, hvis ingen poster fundet

Der er ingen registrering for måneden January det er derfor, du ikke får noget resultat. En løsning, der virker, er ved at slutte sig til en underforespørgsel med en liste over måneder, som du ønsker skal vises på listen.

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
 

OUTPUT

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

  1. Brug CRYPT_GEN_RANDOM() til at oprette et kryptografisk, tilfældigt tal i SQL Server

  2. Konverter kommasepareret streng til array i PL/SQL

  3. Sådan indstilles sætningstimeout for udførelse af forespørgsler

  4. Hvordan rulles tilbage, når der opstår en fejl under udførelse af sql loader-kommando?