首頁 > 資料庫 > mysql教程 > COUNT(*) 與 COUNT(Column):SQL 中的差異是什麼?

COUNT(*) 與 COUNT(Column):SQL 中的差異是什麼?

Susan Sarandon
發布: 2025-01-13 14:57:43
原創
624 人瀏覽過

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

*SQL中的COUNT()和COUNT(列名): 細微卻重要的差別**

在使用SQL查詢時,理解不同聚合函數(如COUNT(*)和COUNT(列名))的細微之處至關重要。本文旨在闡明這兩個函數之間微妙但重要的差異。

*COUNT(列名)與COUNT()的比較**

COUNT(列名)計算指定列中非空值的個數。此函數用於確定列中存在且滿足指定條件的值的個數。

另一方面,COUNT(*)計算表中的所有行數,無論它們是否包含空值。它有時被稱為“全稱量詞”,因為它考慮表中的每一行,有效地傳回總行數。

實際範例

考慮以下計算表中重複值個數的查詢:

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

在此查詢中,COUNT(column_name)函數用於計算指定列(column_name)中非空值的出現次數。如果某個值的非空出現次數超過一次,則該行被視為重複行。

如果我們在這個查詢中用COUNT(*)取代COUNT(column_name)函數,結果會略有不同。修改後的查詢會在結果集中傳回額外的一行,該行包含column_name列的空值和表中總行數(包括包含空值的那些行)。

示範

為了說明這個差異,請考慮以下SQL程式碼:

<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>
登入後複製

執行此查詢的結果如下:

<code>7   3   2</code>
登入後複製

COUNT(*)函數傳回7,表示表格中的總行數。 COUNT(id)函數傳回3,表示id列中非空值的行數。 COUNT(id2)函數傳回2,表示id2列中非空值的行數。

總之,COUNT(列名)和COUNT()之間的主要區別在於,COUNT()在其計數中包含空值,而COUNT(列名)則將其排除在外。理解這種差異對於準確的資料分析和查詢最佳化至關重要。

以上是COUNT(*) 與 COUNT(Column):SQL 中的差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板