Rumah > pangkalan data > tutorial mysql > Adakah `COUNT(*)` Sentiasa Mengembalikan Nilai, Walaupun dengan Sifar Padanan?

Adakah `COUNT(*)` Sentiasa Mengembalikan Nilai, Walaupun dengan Sifar Padanan?

Linda Hamilton
Lepaskan: 2025-01-13 07:20:43
asal
425 orang telah melayarinya

Does `COUNT(*)` Always Return a Value, Even with Zero Matches?

Adakah

*`COUNT()` sentiasa dijamin hasil, walaupun tiada perlawanan? **

Adalah penting untuk memahami tingkah laku COUNT(*) apabila menggunakan pertanyaan seperti berikut:

SELECT COUNT(*) as num FROM table WHERE x = 'y'
Salin selepas log masuk

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:

  • Sesetengah pangkalan data mungkin memerlukan penggunaan COUNT(*) dan bukannya COUNT() untuk memastikan nilai NULL ​​dikira.
  • Menambah klausa GROUP BY pada pertanyaan akan menyebabkan COUNT(*) mengembalikan sifar baris jika tiada kumpulan yang sepadan.

Pengecualian

Terdapat pengecualian yang jarang berlaku untuk peraturan ini, contohnya:

  • Pangkalan data dikonfigurasikan untuk mengembalikan NULL atau ralat untuk fungsi agregat yang tidak mempunyai baris yang sepadan.
  • Data yang rosak atau tidak sah menghalang pertanyaan daripada diproses dengan betul.

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!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan