Rumah >pangkalan data >tutorial mysql >COUNT(*) vs. COUNT(Lajur): Apakah Perbezaan dalam SQL?

COUNT(*) vs. COUNT(Lajur): Apakah Perbezaan dalam SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-13 14:57:43621semak imbas

COUNT(*) vs. COUNT(Column): What's the Difference in SQL?

*COUNT () dan COUNT (nama lajur) dalam SQL: perbezaan halus tetapi penting**

Apabila menggunakan pertanyaan SQL, adalah penting untuk memahami kehalusan fungsi agregat yang berbeza seperti COUNT(*) dan COUNT(nama lajur). Artikel ini bertujuan untuk menjelaskan perbezaan halus tetapi penting antara kedua-dua fungsi ini.

*Perbandingan COUNT (nama lajur) dan COUNT ()**

COUNT (nama lajur) mengira bilangan nilai bukan nol dalam lajur yang ditentukan. Fungsi ini menentukan bilangan nilai yang wujud dalam lajur yang memenuhi kriteria tertentu.

COUNT(*), sebaliknya, mengira semua baris dalam jadual, tidak kira sama ada ia mengandungi nilai nol. Ia kadangkala dipanggil "pengkuantiti sejagat" kerana ia mempertimbangkan setiap baris dalam jadual, dengan berkesan mengembalikan jumlah baris.

Contoh praktikal

Pertimbangkan pertanyaan berikut yang mengira bilangan nilai pendua dalam jadual:

<code class="language-sql">select column_name, count(column_name)
from table
group by column_name
having count(column_name) > 1;</code>

Dalam pertanyaan ini, fungsi COUNT(column_name) digunakan untuk mengira bilangan kemunculan nilai bukan nol dalam lajur yang ditentukan (column_name). Jika nilai muncul bukan nol lebih daripada sekali, baris itu dianggap sebagai pendua.

Jika kami menggantikan fungsi COUNT(column_name) dengan COUNT(*) dalam pertanyaan ini, hasilnya akan berbeza sedikit. Pertanyaan yang diubah suai mengembalikan baris tambahan dalam set hasil yang mengandungi nilai nol untuk lajur nama_lajur dan jumlah bilangan baris dalam jadual (termasuk baris yang mengandungi nilai nol).

Demo

Untuk menggambarkan perbezaan ini, pertimbangkan kod SQL berikut:

<code class="language-sql">create table #bla(id int,id2 int)
insert #bla values(null,null)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,null)

select count(*),count(id),count(id2)
from #bla</code>

Hasil pelaksanaan pertanyaan ini adalah seperti berikut:

<code>7   3   2</code>

Fungsi COUNT(*) mengembalikan 7, menunjukkan jumlah bilangan baris dalam jadual. Fungsi COUNT(id) mengembalikan 3, yang mewakili bilangan baris dengan nilai bukan nol dalam lajur id. Fungsi COUNT(id2) mengembalikan 2, menunjukkan bilangan baris dengan nilai bukan nol dalam lajur id2.

Untuk meringkaskan, perbezaan utama antara COUNT(Nama Lajur) dan COUNT() ialah COUNT() termasuk nilai nol dalam kiraannya, manakala COUNT(Nama Lajur) mengecualikannya. Memahami perbezaan ini adalah penting untuk analisis data yang tepat dan pengoptimuman pertanyaan.

Atas ialah kandungan terperinci COUNT(*) vs. COUNT(Lajur): Apakah Perbezaan dalam 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