Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zwróć NULL, jeśli Count(*) wynosi zero

Po pierwsze, brakuje Ci GROUP BY klauzula u dołu zapytania, aby pogrupować według 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

Następnie, jeśli chcesz po prostu nie wyświetlać wierszy, w których total_student =0, możesz użyć klauzuli 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

Możesz też zmienić LEFT JOIN do INNER JOIN aby osiągnąć to samo w tym przypadku.

Na koniec, jeśli zamiast tego chcesz zamienić 0 na null, ale nadal masz wiersze, możesz zaktualizować instrukcję select, uzyskując sumy do:

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. wywołaj skrypt php dla każdego wiersza w mojej bazie danych mysql

  2. Problemy z instalacją mysqlclient przez pip

  3. Pobierz wszystkie wiersze na podstawie zapytania do tablicy

  4. Liczba atrybutów wyszukiwania aspektowego

  5. Jak zapobiec tworzeniu rekordów, w których wartość dwóch pól jest taka sama?