sql >> Database >  >> RDS >> Mysql

Retourneer NULL als Count(*) nul is

Ten eerste mis je een GROUP BY clausule onderaan uw zoekopdracht om te groeperen op 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

Als je dan gewoon geen rijen wilt tonen waar total_student =0 dan kun je de MySQL HAVING-clausule gebruiken:

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

Of u kunt LEFT JOIN wijzigen naar INNER JOIN om in dit geval hetzelfde te bereiken.

Als u in plaats daarvan 0 wilt vervangen door null maar nog steeds rijen hebt, kunt u de select-instructie bijwerken om de totalen te krijgen tot:

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


  1. Hoe u alle beperkingen van CHECK en externe sleutels in een database in SQL Server uitschakelt (T-SQL-voorbeelden)

  2. schuine streep voor elk citaatprobleem

  3. E-mail verzenden vanaf een trigger in SQL Server (T-SQL)

  4. Hoe mysqli voorbereide verklaringen gebruiken?