Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySql count() zwraca 0, jeśli nie znaleziono żadnych rekordów

Brak wpisu za miesiąc January dlatego nie otrzymujesz żadnego rezultatu. Jednym z rozwiązań, które działa, jest dołączenie do podzapytania zawierającego listę miesięcy, które chcesz wyświetlić na liście.

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

WYJŚCIE

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konfigurowanie klastra MySQL InnoDB z powłoką MySQL (plus router MySQL)

  2. Jak przetestować instrukcję SQL Update przed jej uruchomieniem?

  3. Jak uzyskać rekordy z ostatnich 7 dni w MySQL?

  4. Hibernacja nie przestrzega pola klucza podstawowego auto_increment MySQL

  5. Twórz procedury składowane za pomocą PDO w PHP