Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt NULL zurück, wenn Count(*) Null ist

Erstens fehlt Ihnen ein GROUP BY Klausel am Ende Ihrer Abfrage, um nach school_name zu gruppieren :

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

Wenn Sie Zeilen mit total_student =0 einfach nicht anzeigen möchten, können Sie die MySQL-HAVING-Klausel verwenden:

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

Oder Sie können LEFT JOIN ändern zu INNER JOIN um in diesem Fall dasselbe zu erreichen.

Wenn Sie stattdessen 0 durch null ersetzen möchten, aber immer noch Zeilen haben, können Sie die select-Anweisung aktualisieren, um die Summen zu erhalten:

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