在sql语句中有一个聚合函数count();这个函数里面可以写*,可以写数字(不仅仅只可以写1),可以写具体字段,他们之间有什么区别呢?

查阅资料得知,count(*)与count(1)在各种数据库服务器底层中,效果是一样的。就是分组后,能查出数据,就会记录1条,依次往上加。所以就算只有一个字段有值,也会被+1。在外连接查询的时候,经常会碰到很多字段为空(null)的情况。所以这个时候就得根据需求来确定count函数里面写什么。

count(具体字段)这种写法的意思是,只有当具体字段的值不为空(null)的时候,才会+1。所以有时候分组查询了很多条数据,但是那个具体字段一直是null的话,那么count(具体字段)返回的还是0。

这种情况在外连接里经常碰到,这个时候,用count(*或数字)与count(具体字段)所返回的值是有可能不同的,不同就在于具体字段有没有空(null)。有几个空(null),那么count(具体字段)就会比count(*或数字)少几条数据。

总结:

count(*)与count(数字)这种写法更容易理解的含义是:返回该分组数据的总条数,有多少条,就会返回多少(字段全是null的是不存在的,所以有多少条数据,就会返回多少)。

count(具体字段)这种写法更容易理解的含义是:返回该具体字段在分组数据中不为空(null)的条数,有多少条不为空(null),就会返回多少。

性能方面:count(*)的性能等于count(数字)大于count(具体字段)

因为在sql的引擎中,分完组之后,count(*)与count(数字)其实结果就已经出来了,但是如果写了count(具体字段),引擎还会在遍历一遍分完组的数据,统计具体字段不为空(null)的条数,然后返回出来。

关于sql语句中的count(*),count(1),count(具体字段)的介绍相关推荐

  1. JAVA——prepareStatement中SQL语句中占位符(?)替换表名和字段名

    基本概念 PreparedStatement:Statement的改良版,具有预编译功能,方便使用,运行速度快. 问题描述 1.根据测试占位符?不能用于表名 String strSql="S ...

  2. 【Elasticsearch】Elasticsearch如何实现 SQL语句中 Group By 和 Limit 的功能

    1.概述 转载:https://elasticsearch.cn/article/629 有 SQL 背景的同学在学习 Elasticsearch 时,面对一个查询需求,不由自主地会先思考如何用 SQ ...

  3. 转在同一个sql语句中如何写不同条件的count数量

    今天在做Portal中的Dashboard展现的时候,需要对多个统计字段做展现,根据我现在的掌握水平,我只能在sql调用构建器中实现一种sql语 句返回的resultSet做展现.没有办法,只能从数据 ...

  4. sql 语句中count()条件计数

    在count函数里直接对需要计数的变量写条件表达式 但是需要加 'or NULL',如下所示: select count(distinct job_id), count(pay_pv>0 or ...

  5. My Batis XML 写 SQL 语句 中使用 count

    My Batis XML 写 SQL 语句 中使用 count 函数碰到的问题 今天使用My batis 在xxx.xml 编写 SQL 语句 发现了一个问题 Count(*) 后面按理说是 随便写别 ...

  6. groovy怎样从sql语句中截取表名_sql注入mysql篇

    SQL注入 __0x01 ♛Sql注入原理 Sql注入顾名思义是没有对用户输入的参数进行过滤导致测试者可以将一段非正常语句插入到查询语句中,由web应用带入到数据库中执行,从而读取数据库中的数据. _ ...

  7. SQL语句中的select高级用法

    #转载请联系 为了更好的了解下面的知识点,我们先创建两张表并插入数据. # 学生表 +----+-----------+------+--------+--------+--------+------ ...

  8. IsNull 和 SQL语句中CASE WHEN用法

    [转]IsNull 和 SQL语句中CASE WHEN用法收藏   [转]IsNull 和 SQL语句中CASE WHEN用法 1.ISNULL     使用指定的替换值替换   NULL.      ...

  9. 报错,sql语句中尽量不要使用*,只查询需要的字段出来

    错误: sql语句中尽量不要使用*,只查询需要的字段出来. 解决: select id,tran_code,tran_name,tran_date,tran_time,tran_amount,1 as ...

  10. 【JavaWeb之旅二】MySQL数据库之SQL语句中的DML语句与DQL语句

    SQL语句中的DML语句与DQL语句 文章目录 SQL语句中的DML语句与DQL语句 1.SQL语句之DML 1.1DML常见的语法 1.添加数据常见语句 2.修改.删除数据常用语法 2.SQL语句之 ...

最新文章

  1. RecyclerView 刷新的时候出现阴影的处理方法
  2. Ruby版本管理(RVM)
  3. 写文章最难写的是标题
  4. enableEventValidation错误原因分析以及解决办法
  5. IO流 Buffered 综合练习
  6. C语言趣味小游戏——扫雷(详解版)
  7. Mac上好用且免费的远程桌面SSH工具(FinalShell)
  8. 使用AccessibilityService来做一个自动抢红包插件
  9. iZotope RX 7 Advanced混音插件使用教程
  10. MES系统的应用(中)
  11. 65 - 请解释什么是线程锁,以及如何使用线程锁
  12. POJ3107 Godfather树的重心
  13. MT6735平台UART打印问题
  14. Flink教程(10)- Flink批流一体API(其它)
  15. ArcGIS MPK的两种打包方式_陈焜浩Arain_新浪博客
  16. Microsoft Graph for Office 365 - 用例:更新用户邮箱设置
  17. 翻译“举头望明月,低头思故乡”为英文
  18. 聚创卓跃:拼多多的人群数据哪里看?
  19. 绝地淘沙显示进不去服务器,绝地国服遥遥无期 这款国产游戏却已经抢先登陆了!...
  20. html图片怎么设置热区不大小,店铺装修技巧之图片尺寸大全!收藏必备!随时可查看!...

热门文章

  1. 汽车贴膜质保查询小程序开发制作
  2. 小兔子笑话全集,工作之余轻松下
  3. 基于java中JFrame/JPanel/JSplitPane/JTabbedPane的图形界面
  4. OpenCV:qt.qpa.plugin: Could not load the Qt platform plugin “xcb”
  5. githHub使用基础指南
  6. 惊艳亚洲CES展 长虹智慧家庭应用解决方案全面市场化
  7. C语言 | perror函数使用详解
  8. MongoDB 分片集群
  9. H.264/H265的NAL解析
  10. Python模块学习:glob 文件路径查找