sql >> Databasteknik >  >> RDS >> Mysql

Returnera NULL om Count(*) är noll

För det första saknar du en GROUP BY klausul längst ned i din fråga för att gruppera efter school_name :

SELECT count(student_name) AS total_student, school_name
FROM student
    LEFT JOIN school_info ON school_info.school_id = student.school_id
WHERE student.status = '0'
GROUP BY school_name

Sedan, om du helt enkelt inte vill visa rader där total_student =0 kan du använda MySQL HAVING-satsen:

SELECT count(student_name) AS total_student, school_name
FROM student
    LEFT JOIN school_info ON school_info.school_id = student.school_id
WHERE student.status = '0'
GROUP BY school_name
HAVING count(student_name) > 0

Eller så kan du ändra LEFT JOIN till INNER JOIN för att åstadkomma samma sak i det här fallet.

Slutligen, om du istället vill ersätta 0 med null men fortfarande har rader, kan du uppdatera select-satsen för att få totalsummorna till:

SELECT IF(COUNT(student_name) = 0, NULL, COUNT(student_name)) AS total_student, school_name


  1. Värdefel vid import av data till postgres-tabellen med psycopg2

  2. Migrera en Oracle-databas från AWS EC2 till AWS RDS, del 4

  3. VÄNSTER GÅ MED efter GROUP BY?

  4. Mysql Concat två kolumner medan du söker med LIKE