Mysql
 sql >> база данни >  >> RDS >> Mysql

Върнете NULL, ако Count(*) е нула

Първо, липсва ви GROUP BY клауза в долната част на вашата заявка за групиране по 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

След това, ако искате просто да не показвате редове, където 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

Или можете да промените LEFT JOIN към INNER JOIN за да постигнем същото в този случай.

И накрая, ако вместо това искате да замените 0 с null, но все още имате редове, можете да актуализирате оператора select, получавайки общите суми до:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да пренасочите stdout от докер контейнер към хост

  2. грешка в mysql модула за изгледи на drupal

  3. Накарайте влизането в уебсайт да работи и на WordPress

  4. Как да тълкуваме изхода на MySQL EXPLAIN?

  5. Използване на MySQLi от друг клас в PHP