*`COUNT()` sentiasa dijamin hasil, walaupun tiada perlawanan? **
Adalah penting untuk memahami tingkah laku COUNT(*)
apabila menggunakan pertanyaan seperti berikut:
<code class="language-sql">SELECT COUNT(*) as num FROM table WHERE x = 'y'</code>
Penjelasan pertanyaan
Pertanyaan ini mengira bilangan baris dalam jadual table
dengan lajur x
bersamaan dengan y
.
*Jawapan: Ya, `COUNT()` sentiasa mengembalikan hasil**
Tidak seperti fungsi agregat lain seperti MAX, SUM atau MIN, yang mengembalikan nilai NULL apabila tiada rekod sepadan dengan keadaan, COUNT(*)
sentiasa mengembalikan hasil.
*Punca: `COUNT()` mengira nilai NULL**
Sebab bagi tingkah laku ini ialah COUNT(*)
menilai semua baris dalam jadual, termasuk baris dengan nilai NULL. Oleh itu, COUNT(*)
sentiasa mengembalikan 0 walaupun tiada baris yang sepadan dengan keadaan dalam klausa WHERE.
Nota tambahan:
COUNT(*)
dan bukannya COUNT()
untuk memastikan nilai NULL dikira. COUNT(*)
mengembalikan sifar baris jika tiada kumpulan yang sepadan. Pengecualian
Terdapat pengecualian yang jarang berlaku untuk peraturan ini, contohnya:
Atas ialah kandungan terperinci Adakah `COUNT(*)` Sentiasa Mengembalikan Nilai, Walaupun dengan Sifar Padanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!