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

MYSQL:COUNT với mệnh đề GROUP BY, LEFT JOIN và WHERE không trả về giá trị 0

Lý do nó trả về 0 hàng là bạn đang nhóm trên một giá trị trong bảng_1. Sau khi không có giá trị nào trong bảng_1, không có hàng nào để trả về. Nói theo cách khác, nếu bạn trả về t1.any_col trong truy vấn của mình từ GROUP BY như vậy:

SELECT `t1`.`any_col`, COUNT(`t2`.`name`) 
FROM `table_1` `t1` 
    LEFT JOIN `table_2` `t2` ON `t1`.`key_id` = `t2`.`key_id` 
WHERE `t1`.`another_column` = 123 
GROUP BY `t1`.`any_col` 

Điều gì sẽ hiển thị cho t1.any_col khi không có hàng? Cách duy nhất để đạt được những gì bạn muốn là kết hợp các kết quả của bạn với một truy vấn khác để kiểm tra xem không có hàng nào trong bảng_1. Trong ví dụ này, tôi đang sử dụng chế độ xem INFORMATION_SCHEMA chỉ để có một thứ gì đó mà tôi có thể truy vấn.

SELECT COUNT(`t2`.`name`) 
FROM `table_1` `t1` 
    LEFT JOIN `table_2` `t2` ON `t1`.`key_id` = `t2`.`key_id` 
WHERE `t1`.`another_column` = 123 
GROUP BY `t1`.`any_col` 
UNION ALL
SELECT 0
FROM INFORMATION_SCHEMA.TABLES
Where Not Exists( Select 1 From `table_1` )
LIMIT 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Workbench bỏ qua khóa ngoại

  2. Tôi có nên chuyển biến $ mysqli của mình cho mỗi hàm không?

  3. MySQL:Cập nhật truy vấn bằng If else

  4. Làm cách nào để mô phỏng WHERE 1 trong một truy vấn động?

  5. Django + MySQL trên Elastic Beanstalk - Lỗi khi truy vấn MySQL