Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Retorna NULL se Count(*) for zero


Primeiro, está faltando um GROUP BY cláusula na parte inferior de sua consulta para agrupar por 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

Então, se você quiser simplesmente não mostrar linhas onde total_student =0, então você pode usar a cláusula 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 você pode alterar LEFT JOIN para INNER JOIN para realizar a mesma coisa neste caso.

Por fim, se você quiser substituir 0 por null, mas ainda tiver linhas, poderá atualizar a instrução select obtendo os totais para:
SELECT IF(COUNT(student_name) = 0, NULL, COUNT(student_name)) AS total_student, school_name