Rumah >pangkalan data >tutorial mysql >COUNT(lajur) lwn. COUNT(*): Bilakah Anda Harus Menggunakan Setiap Fungsi Kiraan SQL?
*Fungsi mengira SQL: Perbezaan dan senario aplikasi antara COUNT(lajur) dan COUNT()**
Dalam pangkalan data SQL, operasi mengira adalah fungsi asas dan biasa digunakan. Walau bagaimanapun, pilihan COUNT(column)
dan COUNT(*)
secara langsung akan mempengaruhi keputusan. Artikel ini akan menyelami perbezaan utama antara kedua-dua fungsi pengiraan ini.
COUNT(column)
Fungsi mengira bilangan nilai bukan NULL dalam lajur yang ditentukan. Jika baris mengandungi nilai NULL dalam lajur itu, baris itu akan dikecualikan daripada kiraan. Ciri ini berguna apabila mengira nilai unik atau titik data tertentu.
Sebaliknya, fungsi COUNT(*)
mengira jumlah bilangan baris dalam kumpulan yang dipilih tanpa mengira sama ada lajur mengandungi nilai NULL. Ia mengira kedua-dua nilai bukan NULL dan nilai NULL.
Perbezaan ini menjadi jelas apabila berurusan dengan jadual yang mengandungi nilai NULL. Sebagai contoh, pertimbangkan pertanyaan berikut:
<code class="language-sql">SELECT column_name, COUNT(column_name) FROM table GROUP BY column_name HAVING COUNT(column_name) > 1;</code>
Pertanyaan ini mendapatkan semula kumpulan baris yang nilai column_name
berlaku lebih daripada sekali. Walau bagaimanapun, jika kita menggantikan COUNT(column_name)
dengan COUNT(*)
, kita akan menghadapi masalah yang berpotensi.
Dengan COUNT(*)
, pertanyaan akan mengira semua baris dalam setiap kumpulan, termasuk yang mengandungi nilai NULL dalam column_name
. Ini boleh mengakibatkan baris tambahan dalam output yang mengandungi nilai NULL dan kiraan nilai NULL mereka.
Untuk menggambarkan ini, pertimbangkan jadual yang mengandungi data berikut:
id | id2 |
---|---|
NULL | NULL |
1 | NULL |
NULL | 1 |
1 | NULL |
NULL | 1 |
1 | NULL |
NULL | NULL |
Pertanyaan berikut menggunakan COUNT(id)
akan mengembalikan hasil yang betul:
<code class="language-sql">SELECT id, COUNT(id) FROM table GROUP BY id HAVING COUNT(id) > 1;</code>
Output:
id | COUNT(id) |
---|---|
1 | 3 |
Walau bagaimanapun, jika kita menggunakan COUNT(*)
kita akan mendapat baris tambahan:
<code class="language-sql">SELECT id, COUNT(*) FROM table GROUP BY id HAVING COUNT(*) > 1;</code>
Output:
id | COUNT(*) |
---|---|
1 | 3 |
NULL | 2 |
Seperti yang ditunjukkan di atas, hasil menggunakan COUNT(*)
mengandungi baris tambahan dengan id
ialah NULL dan kiraan 2, menunjukkan bilangan baris yang mengandungi nilai NULL id
.
Oleh itu, pilihan COUNT(column)
dan COUNT(*)
bergantung pada data khusus dan hasil yang diingini. COUNT(column)
lebih sesuai untuk mengira nilai bukan NULL, manakala COUNT(*)
digunakan untuk mengira semua baris, termasuk yang mengandungi nilai NULL.
Atas ialah kandungan terperinci COUNT(lajur) lwn. COUNT(*): Bilakah Anda Harus Menggunakan Setiap Fungsi Kiraan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!