Mysql 如果计数(*)为零,则返回NULL

Mysql 如果计数(*)为零,则返回NULL,mysql,Mysql,我有以下mysql查询: 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' 它返回: total_student school_name 0 NULL 我试图实现的是,如果total_s

我有以下mysql查询:

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'
它返回:

total_student   school_name
  0               NULL
我试图实现的是,如果total_student=0,则不显示任何值或NULL

total_student   school_name 
你能告诉我怎么做吗


谢谢:)

首先,您在查询“分组依据”
school\u name
的底部缺少一个
groupby
子句:

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
然后,如果您只想不显示total_student=0的行,那么可以使用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
或者,您可以将
左连接
更改为
内部连接
,以在本例中完成相同的操作

最后,如果您想将0替换为null,但仍有行,则可以更新select语句,使总计为:

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

请尝试使用用例语法:

添加HAVING子句以筛选出0行:

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'
HAVING total_student > 0