Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL:COUNT dengan GROUP BY, LEFT JOIN dan klausa WHERE tidak mengembalikan nilai nol

Alasan ia mengembalikan nol baris adalah karena Anda mengelompokkan nilai dalam table_1. Karena tidak ada nilai dalam table_1, tidak ada baris untuk dikembalikan. Dengan kata lain, jika Anda mengembalikan t1.any_col dalam kueri Anda dari GROUP BY seperti ini:

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` 

Apa yang akan ditampilkan untuk t1.any_col ketika tidak ada baris? Satu-satunya cara untuk mencapai apa yang Anda inginkan adalah menyatukan hasil Anda dengan kueri lain yang memeriksa tidak ada baris di table_1. Dalam contoh ini, saya menggunakan tampilan INFORMATION_SCHEMA hanya untuk memiliki sesuatu yang dapat saya kueri.

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. Panjang komentar tabel di MySQL

  2. Pemicu MySQL PHP - Bagaimana cara meneruskan variabel ke pemicu?

  3. Operator penggabungan MySQL

  4. Kolom 'Perbarui Timestamp' MySQL - Pemicu

  5. Python MySQL lebih cepat