sum()函数和count()函数的区别

其实两者很好容易区分,sum,即求和,多个列相加的和; count计数,一共有多少条数据

sum()函数求累加; 对符合条件的记录的数值列求和;

count()函数求个数; 对查询中符合条件的结果(或记录)的个数

数据库中对空值的处理:sum()不计算,count()认为没有此项;

可以使用 IfNull(cloumn,0)对空值处理

sum()函数相加时,如果有一列的值为null,则结果为null
页面数据字段显示为null, 数据库中默认为null, 怎么处理显示问题?

  1. 修改数据库, 默认为null改为empty String 或者 “”,但这种方式对于新增的数据有效,对于已存在的数据无效, 这种在创建数据库时最好设置好

  2. 后台查询时sql语句修改, 如果是varchar类型的,则 IFNULL(column,“”),若是int类型,则IFNULL(colum,0),这样既可以修改显示, (推荐)

  3. jsp页面做判断, 做为null处理

  4. 后台写个方法,循环遍历做为null处理(不建议,数据量大时,效率低)
    数据库版本问题对group by函数的影响

select 选取分组中的列+聚合函数 from 表名称 group by 分组的列

从语法格式来看,是先有分组,再确定检索的列,检索的列只能在参加分组的列中选。

所以问题中的,group by 后的 a,b,c是先确定的。select后的a,b,c才是可以变的。即

以下语句都是正确的:

select a,b,c from table_name group by a,b,c,d;

select a,b from table_name group by a,b,c;

select a,max(a) from table_name group by a,b,c;

以下语句则是错误的:

select a,b,c from table_name group by a,b;

select a,b,c from table_name group by a;

而因为MySQL的强大,它兼容了这个错误!!!

但是在DOS是不能的。所以出现了DOS下报错,而在MySQL中能够查找的情况(其实这个查找的结果是不对的)。(MySQL5.5能够兼容,5.7不能兼容)

this is incompatible with sql_mode=only_full_group_by

看一下ONLY_FULL_GROUP_BY的意思是:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。

例如,但是在5.5中可以正常运行,但是在5.7就不行

select id,name,age,sex from user group by sex (yes)
select id,name,age from user group by sex

解决方式:

一:在sql查询语句中不需要group by的字段上使用any_value()函数

这种对于已经开发了不少功能的项目不太合适,毕竟要把原来的sql都给修改一遍

3.1. 二:修改my.cnf(windows下是my.ini)配置文件,删掉only_full_group_by这一项

若我们项目的mysql安装在ubuntu上面,找到这个文件打开一看,里面并没有sql_mode这一配置项,想删都没得删。

当然,还有别的办法,打开mysql命令行,执行命令

1 select @@sql_mode;

这样就可以查出sql_mode的值,复制这个值,在my.cnf中添加配置项(把查询到的值删掉only_full_group_by这个选项,其他的都复制过去):

1 sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;

如果 [mysqld] 这行被注释掉的话记得要打开注释。然后重重启mysql服务

注:使用命令

1 set sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

这样可以修改一个会话中的配置项,在其他会话中是不生效的。

注:以上情况为操作数据库配置解决问题,如果项目已经运行一段时间后(除非刚搭好框架,刚开始运行),不建议修改数据库配置,可以修改代码

group by()的字段和要查询的字段一致,或者少于group by后的字段

MySQL中Count和Sum的区别相关推荐

  1. mysql''和null,mysql中NULL和null的区别

    接触php的web开发一段时间了,在进行数据库操作的时候经常会遇到一个问题,使得同一字段在页面显示时有3种类型NULL,null以及数字,当时的解决办法是将这一字段定义为varchar类型,在插入数据 ...

  2. MySQL中count是什么函数_MySQL中

    本篇文章给大家带来的内容是关于mysql大表中count()的用法以及mysql中count()的优化,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助.一个单表中包含有6000w+的数据 ...

  3. MySQL中In与Exists的区别

    MySQL中In与Exists的区别 1 例子 2 EXISTS和IN的介绍 2.1 exists 2.2 in 2.3 使用上的区别 3 EXISTS和IN的性能分析 4 总结 1 例子 有两个表需 ...

  4. mysql数据库中count的作用_详解 MySQL中count函数的正确使用方法

    1. 描述 在MySQL中,当我们需要获取某张表中的总行数时,一般会选择使用下面的语句 select count(*) from table; 其实count函数中除了*还可以放其他参数,比如常数.主 ...

  5. MySQL中interactive_timeout和wait_timeout的区别

    2019独角兽企业重金招聘Python工程师标准>>> 在用mysql客户端对数据库进行操作时,打开终端窗口,如果一段时间没有操作,再次操作时,常常会报如下错误: ? 1 2 3 E ...

  6. mysql中的blob和text区别

    mysql中的blob和text区别 经过查询资料发现 除了blob 还有tinyblob longblob mediumblob 当然text还有tinytext mediumtext longte ...

  7. mysql中char与varchar的区别分析

    原文网址:http://www.jb51.net/article/23575.htm mysql中char与varchar的区别分析 作者: 字体:[增加 减小] 类型:转载 在mysql教程中cha ...

  8. mysql中where和and的区别

    本文来说下mysql中where和and的区别 文章目录 概述 内连接的时候 左外连接的时候 本文小结 概述 多表查询语法结构:table_reference {[INNER] JOIN | {LEF ...

  9. 【038】MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义?

    ♣题目部分 MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义? ♣答案部分 (1).varchar与char的区别区别一,定长和变长char 表示定长,长度固定, ...

最新文章

  1. 将日期yyyy-MM-dd转为数字大写的形式
  2. java properties读取 封装_java properties 文件读取踩坑记
  3. 让底部始终在浏览器底部
  4. 密码登录源码(jsp+java+数据库)
  5. python教程:将一个列表切分成多个小列表
  6. OpenCV在水平线上校准3个摄像机的实例(附完整源代码)
  7. 会话跟踪之Session
  8. codeforces 133A-C语言解题报告
  9. SpringBoot项目中Controller层代码编写规范整理
  10. VS2010 测试功能之旅:编码的UI测试(4)-通过编写测试代码的方式“.NET研究”建立UI测试(下)...
  11. 013.Makefile
  12. 压力测试和负载测试的区别/性能指标/专项测试/(tps/qps)
  13. 接口测试总结-值得一看哟
  14. 开发时多选操作的实现
  15. win10如何调整计算机时间同步,win10电脑时间与Internet同步的设置方法
  16. 油田智能化远程监控系统_油气田长停井图像远程传输监控系统
  17. TiDB2.1 报错statement count 5001 exceeds the transaction limitation, autocommit = false
  18. win7+vs2015+cuda8.0+cudnn5.1+caffe+tensorflow+keras环境搭建
  19. win7截屏快捷键未在计算机上运行,修复win7“截图工具当前未在计算机上运行”的方法...
  20. s5p4418的uboot开通网络支持

热门文章

  1. VVC学习之五:帧内预测之色度预测——CCLM及代码学习
  2. SQL查询某个时间段购买过商品的所有用户
  3. 【Android面试】Android中高级开发面试必问,7年外包一飞冲天
  4. 项目管理 | 可行性研究报告怎么写?这5大部分一定要在报告里呈现
  5. Jetty篇教程 之Jetty 嵌入式服务器
  6. jinja2.exceptions.TemplateNotFound 报错处理
  7. AGM AG16K FPGA介绍
  8. Python 二维数据
  9. C# 微信支付之JSAPI支付
  10. 非计算机类专业毕业生五年程序员职业生涯的回顾和思考