Mysql 如果计数(*)为零,则返回NULL
我有以下mysql查询: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
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