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

Mengapa COUNT() hanya menampilkan satu baris tabel?

COUNT() adalah fungsi agregasi yang biasanya digabungkan dengan GROUP BY klausa.

curdate() adalah fungsi tanggal yang menampilkan tanggal saat ini.

Hanya MySQL (sejauh yang saya tahu) yang mengizinkan sintaks ini tanpa menggunakan GROUP BY ayat. Karena Anda tidak memberikannya, COUNT(*) akan menghitung jumlah total baris dalam tabel , dan owner kolom akan dipilih secara acak/pengoptimal default/berdasarkan indeks .

Ini harus menjadi pertanyaan Anda :

select owner, count(*) 
from pet
group by owner;

Yang memberi tahu pengoptimal untuk menghitung total baris, untuk setiap pemilik.

Ketika tidak ada kelompok demi klausa yang disebutkan - fungsi agregasi diterapkan pada seluruh data tabel.

EDIT: Hitungan yang akan diterapkan pada setiap baris biasanya tidak dapat dilakukan dengan COUNT() dan biasanya digunakan dengan fungsi analitik -> COUNT() OVER(PARTITION...) yang sayangnya tidak ada di MySQL. Pilihan Anda yang lain adalah membuat JOIN/CORRELATED QUERY untuk kolom tambahan ini.

Suntingan Lain: Jika Anda ingin menghitung total di samping setiap pemilik, Anda dapat menggunakan sub kueri:

SELECT owner,
       (SELECT COUNT(*) FROM pet) as cnt
FROM pet


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uji waktu eksekusi kueri di laravel

  2. KESALAHAN 2006 (HY000):Server MySQL telah hilang

  3. nvl() berfungsi dalam file php

  4. Variabel MySQL dalam skrip ALTER TABLE

  5. Hentikan MySQL Menggunakan Kembali ID AUTO_INCREMENT