Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Trả về NULL nếu Count (*) bằng 0

Đầu tiên, bạn đang thiếu GROUP BY mệnh đề ở cuối truy vấn của bạn để nhóm theo 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

Sau đó, nếu bạn chỉ muốn không hiển thị các hàng có total_student =0 thì bạn có thể sử dụng mệnh đề HAVING của 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'
GROUP BY school_name
HAVING count(student_name) > 0

Hoặc, bạn có thể thay đổi LEFT JOIN tới INNER JOIN để hoàn thành điều tương tự trong trường hợp này.

Cuối cùng, nếu thay vào đó, bạn muốn thay thế 0 bằng null nhưng vẫn có hàng, bạn có thể cập nhật câu lệnh select nhận tổng thành:

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. Tùy chọn bỏ qua của hàm jdbc Pyspark DataFrameWriter có bỏ qua toàn bộ giao dịch hay chỉ các hàng vi phạm không?

  2. Cách phân tích thời gian từ cơ sở dữ liệu

  3. Chọn dữ liệu từ mySQL bằng ID trong URL

  4. Dấu gạch nối trong tên cột trong MySQL DB

  5. Flask-Sqlalchemy Thiếu BEGIN dường như gây ra các phiên không đồng bộ hóa