对于带有WHERE子句的SQL查询语句来说,使用COUNT(字段名)和COUNT(*)的效果是一样的。

解决方案 »

  1.   

    Create Table Test
    (
    a char(4),
    b char(4),
    c char(4),
    d char(4)
    )
    go
    Insert into Test Values
    ('1','a','d','d'),
    ('1','a','d','d'),
    ('1','a','d','d'),
    ('1','a','d','d'),
    ('1','a','d','d'),
    (null,'a','d','d')
    Select * From TestSelect COUNT(*) From Test where a is null
    Select COUNT(a) From Test where a is null
      

  2.   

    http://blog.csdn.net/lwei_998/article/details/6112810
      

  3.   

    count('字段') 已经把字段值为NULL的过滤啦
      

  4.   

    Select COUNT(*) From Test
    Select COUNT(a) From Test
      

  5.   

    结论:1.count(1)与count(*)得到的结果一致,包含null值。
          2.count(字段)不计算null值
          3.count(null)结果恒为0
      

  6.   

    结论:换个顺序2.count(字段)不计算null值1.count(1)与count(*)得到的结果一致,包含null值。
    因为不能1条记录数据所有列都是NULL,都是null 就没这条记录了
    count(主键)与count(1)与count(*)得到的结果一致
    因为主键有非空约束
    count(1),或者count(非空常数)就是告诉数据库,我这行不是空,你给我算去吧3.count(null)结果恒为0 
      

  7.   

    当然是错的啦,count(列名)忽略null值的
      

  8.   

    count(字段名) 忽略空值 效果和count(*) 不一样。
      

  9.   

    对头!count(字段)当字段值为空时不参与统计
    count(*)只要一条记录中有字段非空,统计数值加1
      

  10.   

    这里涉及一个sql重要特性,三值逻辑,true, false ,unknown