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