mysql group by 报错 ,only_full_group_by 三种解决方案
报错信息
错误实例
SELECT
ifnull( sum( checkTime ) / count( 1 ), 0 ) AS time
FROM
( SELECT TIMESTAMPDIFF( MINUTE, CreateTime, EndTime ) AS checkTime FROM statistics_report WHERE AND ReportStatus = 2 GROUP BY reportid ) a
2:
SELECT
ifnull( sum( treatmentTime ) / count( 1 ), 0 ) AS time
FROM
(
SELECT
TIMESTAMPDIFF( MINUTE, min( CreateTime ), max( EndTime ) ) AS treatmentTime
FROM
statistics_report
WHERE
CreateTime > ? SartTime
AND CreateTime < ? EndTime
AND IsReportOperate = 2
AND createtime <> endtime
GROUP BY
reportid
) a
解决方案:
1:使用any_value() 包括具体提示的列名,使mysql 不再纠结与具体哪一个列
2: 把sql_mode 改成非only_full_group_by模式(如果是刚开发项目,且 ,对于项目有深入了解后 ,进行可行性分析后 再改,一般不建议,)
3:把sql 优化 ,对于每一个分组的元素 清晰的告知mysql 需要怎么选择
成功的写法:
SELECT
ifnull( sum( checkTime ) / count( 1 ), 0 ) AS time
FROM
( SELECT TIMESTAMPDIFF( MINUTE, CreateTime, EndTime ) AS checkTime, reportid FROM statistics_report WHERE ReportStatus = 2 ) a
GROUP BY
reportid
-- 这里只是将group by 移动到了括号外面,在括号内不分组,在括号外进行分组,checkTime用sum函数来取值,解决问题。
2:
SELECT
ifnull( sum( timestampdiff( MINUTE, starttime, endtime ) ) / count( 1 ), 0 ) AS time
FROM
(
SELECT
min( createtime ) starttime,
max( endtime ) endtime,
reportid
FROM
statistics_report
WHERE
CreateTime > ? SartTime
AND CreateTime < ? EndTime
AND IsReportOperate = 2
AND createtime <> endtime
GROUP BY
reportid
) a
-- 这里是将timestampdiff 于min max 分开,在进行取最大最小值的时候group by ;在timestampdiff 的時候 不需要分組 ,因为这时候reportid 没有重复的。
-- 另外这里加了ifnull 是为了取到数据的时候避免null
结束分析:
group by 的问题 很奇怪的点在于 5.7 的mysql 版本改版;bug出现具有偶发性;在mysql client执行不抱错,而在程序中执行会报错;
这是哪个问题导致了问题的复杂性,在了解问题原理后 从根本上解决是最直接的方案。
时常问问自己:是不是太菜。
mysql group by 报错 ,only_full_group_by 三种解决方案的更多相关文章
- mysql group by 报错异常解决
mysql报错及其解决方式 1.在使用group by 查询一张表的数据的时候:select date,time,max(delaytime) as delaytime,sum(delaynum) a ...
- Please do not register multiple Pages in undefined.js 小程序报错的几种解决方案
Wed Jun 27 2018 09:25:43 GMT+0800 (中国标准时间) Page 注册错误,Please do not register multiple Pages in undefi ...
- mysql执行update报错 Err] 1055 - 'information_schema.PROFILING.SEQ' isn't in GROUP BY
mysql执行update报错 Err] 1055 - 'information_schema.PROFILING.SEQ' isn't in GROUP BY 今天开发的同事发来如下错误信息,最最简 ...
- mysql 5.7.28 中GROUP BY报错问题 SELECT list is not in GROUP BY clause and contains no
----mysql 5.7.28 中GROUP BY报错问题 SELECT list is not in GROUP BY clause and contains no------ 解决方案: sel ...
- zTree实现地市县三级级联报错(三)
zTree实现地市县三级级联报错(三) 1.具体报错如下 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] ...
- MySQL 5.6 以上版本支持三种sql_mode模式:ANSI、TRADITIONAL和STRICT_TRANS_TABLES。
Field 'id' doesn't have a default value问题解决方法 运维的名义关注0人评论3323人阅读2018-01-23 17:37:42 MySQL 5.0 以上版本 ...
- Linux下登陆MySQL时遇到报错"RROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) "
前言 作者在2021-07-21时遇到 linux下登陆MySQL时遇到报错"RROR 1045 (28000): Access denied for user 'root'@'localh ...
- CentOS命令登录MySQL时,报错ERROR 1045 (28000):
CentOS命令登录MySQL时,报错ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)错误解 ...
- mysql执行update报错1175解决方法
mysql执行update报错 update library set status=true where 1=1 Error Code: 1175. You are using safe update ...
随机推荐
- 用js写的简单的下拉菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 阅读笔记---第三章 Xen信息页
1.文件/xen/include/public/xen.h 2.第一个数据结构:启动信息页strat_info,启动信息页是GuestOS内核启动时,由Xen映射到GusetOS内存空间的一个物理页面 ...
- python 内建属性
在python中创建一个类,它不仅有我们自定义的属性和方法,还有与生俱来的一些属性和方法,我们叫它内建属性. 下面是类常用内建属性列表. 常用专有属性 说明 触发方式 __init__ 构造初始化函数 ...
- linux maven 安装与配置
Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构 ...
- Deep learning_CNN_Review:A Survey of the Recent Architectures of Deep Convolutional Neural Networks——2019
CNN综述文章 的翻译 [2019 CVPR] A Survey of the Recent Architectures of Deep Convolutional Neural Networks 翻 ...
- ubbuntu---多媒体播放器VLC
VLC多媒体播放器:Video LAN Client 信息载体:可见光通信技术(Visible Light Communication,VLC).@ https://baike.baidu.com/i ...
- python高级特性-列表生成
概述 [x *x for x in range(1,11)][k+'='+v for k,v in d.items()] [s.lower() for s in L] 详解 1.单层迭代 >&g ...
- Luogu P1339 热浪Heat Wave
Luogu P1339 热浪Heat Wave 裸·单源最短路. 但是! 有以下坑点: 算过复杂度发现Floyd跑不过去就不要用了. 如果建边是双向边,边的数组大小要开两倍! 考场上如果再把初始化的$ ...
- LFU(最近最不常用)实现(python)
from collections import defaultdict, OrderedDict class Node: __slots__ = 'key', 'val', 'cnt' def __i ...
- python网络-HTTP协议(28)
一.服务器和客户端介绍 1.什么是服务器? 简而言之:提供服务的机器就是服务器,至于提供什么服务不重要,重要的是要给其他人提供服务.例如:FTP服务器可以提供文件下载,SMTP服务器等等,不同的服务器 ...