2012-11-30 163 views
3

下面的sql server 2008語句有什麼不同?sql 2008中select count(*),count(0),count(100),count(Id)之間的區別?

SELECT COUNT(*) FROM dbo.Regular_Report 

SELECT COUNT(0) FROM dbo.Regular_Report 

SELECT COUNT(1) FROM dbo.Regular_Report 

SELECT COUNT(100) FROM dbo.Regular_Report 

SELECT COUNT(ID) FROM dbo.Regular_Report 

請幫我看看上面的答案。 在此先感謝。

+5

你說的是「SQL-Server 2008」,但你也用Oracle和MySQL標記。爲什麼? –

+0

http://stackoverflow.com/questions/1221559/count-vs-count1 – Buzz

回答

9

前四個都是相同的 - 它們計算總行數。

最後一個統計ID不爲空的行數。

8

count(id)將計數id字段中的非空值。

所有其他將計數記錄的數量。

(與文字數字而不是*將計算所有的記錄,其中該值不爲空的人。也許查詢規劃將認識到文字值永遠不會爲空的任何記錄,並做一樣count(*)代替)