Mysql
 sql >> Base de données >  >> RDS >> Mysql

Renvoie NULL si Count(*) vaut zéro

Tout d'abord, il vous manque un GROUP BY clause au bas de votre requête pour regrouper par 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

Ensuite, si vous voulez simplement ne pas afficher les lignes où total_student =0, vous pouvez utiliser la clause MySQL HAVING :

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

Ou, vous pouvez changer LEFT JOIN à INNER JOIN pour accomplir la même chose dans ce cas.

Enfin, si vous souhaitez plutôt remplacer 0 par null mais qu'il reste des lignes, vous pouvez mettre à jour l'instruction select en obtenant les totaux :

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