2016-11-18 57 views
7

MSDN文档状态:COUNT(*)包含空值吗?

COUNT(*)返回组中的项目数量。这包括NULL 值和重复项。

如何在一个组中有一个空值?任何人都可以解释他们想要创造的点吗?

+3

如果你看一点点进一步上涨,他们“我已经使用了更好的表达式:_“COUNT(*)返回指定表中的行数而不删除重复项。它分别计算每行。这包括包含空值的行。“_ –

+0

@TimSchmelter谢谢,我错过了,这说明得更清楚 –

+0

我删除了我的评论,因为现在我重新读你的问题和你的评论,你真的问”为什么微软在文档中写下这样一个糟糕的解释“我不知道这个问题的答案 –

回答

18

如果您有此表

表1:

Field1 Field2 Field3 
--------------------------- 
    1   1   1 
    NULL  NULL  NULL 
    2   2  NULL 
    1   1   1 

然后

SELECT COUNT(*), COUNT(Field1), COUNT(Field2), COUNT(Field3) 
FROM Table1 

输出是:

COUNT(*) = 4; -- count all rows even null/duplicates 

-- count only rows without null values on that field 
COUNT(Field1) = COUNT(Field2) = 3 
COUNT(Field3) = 2 
+0

我可以在所有字段都为空的情况下排成一行吗?微软在他们的文档中解释了这种情况吗? –

+1

是的,只要所有字段都允许,你就可以将所有空值连续排列,这将是非常奇怪的,但是你可以不知道微软对文档的意图,这是你在玩这个函数后必须学习的东西。 –

+0

你说的没错,我只是做了一个临时表,并且确信COUNT(*)包含了空行,在这种情况下考虑过了,我认为这种更实际的用法以及微软很可能试图将其归为空值的观点。例如,如果示例中的字段2和3不为空,并且按字段1分组。 –

0

根据您如何进行连接,您可以在一行中获得空值。确保你正在计数正确的领域或纠正你的连接。