Rumah >pangkalan data >tutorial mysql >COUNT(*) vs. COUNT(Lajur): Apakah Perbezaan dalam 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!