*SQL中COUNT(column)與COUNT()的差異詳解**
在SQL查詢中,count()
函數用於資料聚合,但count(column)
和count(*)
兩種常用形式之間存在細微卻重要的差異。
COUNT(column):排除NULL值
count(column)
語法統計指定列中非NULL值的個數,有效忽略列值為NULL的行。當需要確定列中非空值的個數時,此特性非常有用。
*COUNT():包含NULL值**
相較之下,count(*)
統計結果集中的行數,包含包含NULL值的行。與count(column)
不同,它將NULL視為有效計數項。當需要取得總行數,而不管特定列是否包含缺失資料時,此特性非常有用。
範例說明差異
考慮一個名為#bla
的表,包含以下記錄:
<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)</code>
使用count(column)
執行以下查詢:
<code class="language-sql">select count(id),count(id2) from #bla</code>
結果為:
<code>3 2</code>
其中,count(id)
僅統計id
列中的三個非NULL值,而count(id2)
統計id2
列中的兩個非NULL值。
但是,用count(*)
替換count(column)
,結果為7,如下查詢所示:
<code class="language-sql">select count(*) from #bla</code>
在這種情況下,count(*)
包含表中的七行,無論它們是否包含NULL值。在處理包含缺失資料的dataset時,這種統計非NULL值和統計行的差異變得尤為重要。
以上是COUNT(column) 與 COUNT(*):何時應該在 SQL 中使用 Which?的詳細內容。更多資訊請關注PHP中文網其他相關文章!