sql >> Database >  >> RDS >> Mysql

MySql count() om 0 terug te geven als er geen records gevonden zijn

Er is geen record voor de maand January daarom krijg je geen resultaat. Een oplossing die werkt, is door deel te nemen aan een subquery met een lijst met maanden die u op de lijst wilt weergeven.

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

UITGANG

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


  1. JDBC VS Hibernate

  2. Importeer MySQL-dump naar PostgreSQL-database

  3. Json codeert een volledige mysql-resultatenset

  4. Hoe MATCH AGAINST werkt in MariaDB