2013-03-26 24 views
1

我有一張表,其中有一個用於存儲圖像的可空字段字段類型(SQL SERVER 2005)。 所以我有以下情況:某些字段爲空的行數加上哪裏不是null不同計數的總數

select count (*) from table where image_field is null返回180000行與圖像。

select count (*) from table where image_field is not null返回3600000個沒有圖像的行。

如果我使用select count (*) from table我沒有3780000行(3600000 + 180000),但少一點。

有人可以解釋爲什麼會發生這種情況嗎?

+2

你使用'WITH(NOLOCK)'任何這些查詢這些NUMS比較的人?什麼'sys.partitions'說(總行數)? – 2013-03-26 13:34:35

+0

亞倫,謝謝。 'sys.partitions'表示與使用count相同的總數。 – 2013-03-26 14:09:24

回答

0

有人添加或刪除了幾行?

嘗試

Select Count(*) total, 
    Sum(case when When image_field is null Then 1 Else 0 End) nullCount, 
    Sum(case when When image_field is not null Then 1 Else 0 End) notNulCount 
    From table 

,並從單個查詢

+0

Charles謝謝你的回答。結果是正確的做你的建議。你知道爲什麼發生這種情況嗎? (在使用計數和使用總和的值中有這種差異) – 2013-03-26 14:04:16

+0

區別不是因爲COUNT與SUM有關。不同之處在於,在此查詢中,同一頁面只能讀取*一次*,而在原始查詢中,頁面會多次讀取,並且可能在此期間發生更改。 – 2013-03-26 14:24:45

+0

不明白。表格沒有改變,現在沒有人使用它。你能解釋一下嗎? :d – 2013-03-26 14:26:42