sql >> Databasteknik >  >> RDS >> Mysql

returnera count 0 med mysql group by

En GROUP BY behöver rader att arbeta med, så om du inte har några rader för en viss kategori kommer du inte att få räkningen. Tänk på where-satsen som en begränsning av källraderna innan de grupperas tillsammans. Where-satsen tillhandahåller inte en lista över kategorier att gruppera efter.

Vad du kan göra är att skriva en fråga för att välja kategorier (förorter) och sedan räkna i en underfråga. (Jag är inte säker på hur MySQL:s stöd för detta är)

Något i stil med:

SELECT 
  s.suburb_id,
  (select count(*) from suburb_data d where d.suburb_id = s.suburb_id) as total
FROM
  suburb_table s
WHERE
  s.suburb_id in (1,2,3,4)

(MSSQL, ursäkta)



  1. MySQL-prestanda - IN-klausul kontra lika med (=) för ett enskilt värde

  2. Beräknar tidsskillnaden mellan 2 datum i minuter

  3. Lägg till en främmande nyckel till en befintlig tabell i SQLite

  4. Hur RLIKE-operatören fungerar i MySQL