sql >> Databáze >  >> RDS >> Mysql

Vraťte NULL, pokud je Count(*) nula

Za prvé, chybí vám GROUP BY klauzule v dolní části vašeho dotazu k seskupení podle 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

Pak, pokud chcete jednoduše nezobrazovat řádky, kde total_student =0, můžete použít 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

Nebo můžete změnit LEFT JOIN do INNER JOIN abychom dosáhli stejné věci v tomto případě.

A konečně, pokud místo toho chcete nahradit 0 hodnotou null, ale stále máte řádky, můžete aktualizovat příkaz select a získat součty na:

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


  1. Zjistěte, zda byl řádek aktualizován nebo vložen

  2. MySQL - řazení řetězců oddělených čárkami ve sloupci

  3. Nejlepší DBaaS řešení pro PostgreSQL

  4. Proč tato šablona hibernace bulkUpdate nefunguje