Rumah >pangkalan data >tutorial mysql >COUNT(lajur) lwn. COUNT(*): Bilakah Anda Harus Menggunakan Setiap Fungsi Kiraan SQL?

COUNT(lajur) lwn. COUNT(*): Bilakah Anda Harus Menggunakan Setiap Fungsi Kiraan SQL?

DDD
DDDasal
2025-01-13 15:07:43435semak imbas

COUNT(column) vs. COUNT(*): When Should You Use Each SQL Count Function?

*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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn