Smart貓小萌
2019-08-15 16:37:52
在SQL中,count(列)和count(*)之間有什么區別?我有以下查詢:select column_name, count(column_name)from tablegroup by column_namehaving count(column_name) > 1;會有什么區別,如果我更換了所有調用count(column_name)到count(*)?為了澄清已接受的答案(也許是我的問題),替換count(column_name)為count(*)將在結果中返回一個額外的行,其中包含a null和null列中的值計數。
3 回答

小唯快跑啊
TA貢獻1863條經驗 獲得超2個贊
count(*)計數NULL而count(column)不是
[edit]添加了此代碼,以便人們可以運行它
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
結果7 3 2

FFIVE
TA貢獻1797條經驗 獲得超6個贊
使用*和特定列之間的另一個細微差別是,在列情況下,您可以添加關鍵字DISTINCT,并將計數限制為不同的值:
select column_a, count(distinct column_b)from tablegroup by column_ahaving count(distinct column_b) > 1;

交互式愛情
TA貢獻1712條經驗 獲得超3個贊
另一個也許是微妙的區別是,在某些數據庫實現中,count(*)是通過查看有問題的表上的索引而不是實際的數據行來計算的。由于沒有指定特定的列,因此無需為實際的行及其值而煩惱(如果您計算了特定的列,則會如此)。允許數據庫使用索引數據可能比將其計為“實際”行要快得多。
添加回答
舉報
0/150
提交
取消