遇见 mysql Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre 问题
这是因为mysql5.7及以上版本的mysql中,对于 group by 的这种聚合操作,如果在select 中的列,
没有在group by 中出现,那么这个SQL是不合法的,因为列不在group by的从句中,所以对于设置了这个mode的数据库,在使用group by 的时候,就要用MAX(),SUM(),ANT_VALUE()的这种聚合函数,才能完成GROUP BY 的聚合操作。
查询以后发现是因为only_full_group_by设置的原因,下边我们将其进行关闭:
1. 第一种的解决办法是直接在mysql中进行设置,如下:
mysql> select @@global.sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’;将@@global.sql_mode重新设置后,再进行查询:mysql> SELECT @@GLOBAL.sql_mode;
+----------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode |
+----------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
注:mysql8没有NO_AUTO_CREATE_USER这个模式;这种方式有个缺陷数据库每次重启都会恢复到之前的模式
4.第二种方式:修改配置文件
创建my.cnf文件,vim /etc/my.cnf,将下边的内容拷贝到my.cnf中。
# Example MySQL config file for medium systems. # # This is for a system with little memory (32M - 64M) where MySQL plays # an important part, or systems up to 128M where MySQL is used together with # other programs (such as a web server) # # MySQL programs look for option files in a set of # locations which depend on the deployment platform. # You can copy this option file to one of those # locations. For information about these locations, see: # http://dev.mysql.com/doc/mysql/en/option-files.html # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program # with the "--help" option. # The following options will be passed to all MySQL clients [client]default-character-set=utf8#password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld]sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'character-set-server=utf8init_connect='SET NAMES utf8port = 3306 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M character-set-server=utf8 init_connect='SET NAMES utf8'
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking # Replication Master Server (default) # binary logging is required for replication log-bin=mysql-bin # binary logging format - mixed recommended binlog_format=mixed # required unique id between 1 and 2^32 - 1 # defaults to 1 if master-host is not set # but will not function as a master if omitted server-id = 1 # Replication Slave (comment out master section to use this) # # To configure this host as a replication slave, you can choose between # two methods : # # 1) Use the CHANGE MASTER TO command (fully described in our manual) - # the syntax is: # # CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>, # MASTER_USER=<user>, MASTER_PASSWORD=<password> ; # # where you replace <host>, <user>, <password> by quoted strings and # <port> by the master's port number (3306 by default). # # Example: # # CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, # MASTER_USER='joe', MASTER_PASSWORD='secret'; # # OR # # 2) Set the variables below. However, in case you choose this method, then # start replication for the first time (even unsuccessfully, for example # if you mistyped the password in master-password and the slave fails to # connect), the slave will create a master.info file, and any later # change in this file to the variables' values below will be ignored and # overridden by the content of the master.info file, unless you shutdown # the slave server, delete master.info and restart the slaver server. # For that reason, you may want to leave the lines below untouched # (commented) and instead use CHANGE MASTER TO (see above) # # required unique id between 2 and 2^32 - 1 # (and different from the master) # defaults to 2 if master-host is set # but will not function as a slave if omitted #server-id = 2 # # The replication master for this slave - required #master-host = <hostname> # # The username the slave will use for authentication when connecting # to the master - required #master-user = <username> # # The password the slave will authenticate with when connecting to # the master - required #master-password = <password> # # The port the master is listening on. # optional - defaults to 3306 #master-port = <port> # # binary logging - not required for slaves, but recommended #log-bin=mysql-bin # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /usr/local/mysql/data #innodb_data_file_path = ibdata1:10M:autoextend #innodb_log_group_home_dir = /usr/local/mysql/data # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #innodb_buffer_pool_size = 16M #innodb_additional_mem_pool_size = 2M # Set .._log_file_size to 25 % of buffer pool size #innodb_log_file_size = 5M #innodb_log_buffer_size = 8M #innodb_flush_log_at_trx_commit = 1 #innodb_lock_wait_timeout = 50 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates default-character-set=utf8 [myisamchk] key_buffer_size = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout
————————————————
此配置已经做好了设置,直接使用即可,就是直接多加下边这一行配置:
2.2 重启mysql服务,再次查看:
3.成功~~
遇见 mysql Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre 问题相关推荐
- MySQL Expression 2 of SELECT list is not in GROUP BY clause and contains nonaggregated column yous
MySQL:Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'yous ...
- MySQL查询的时候出现 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre报错
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre -后面一大堆 出错就是这样 我们可以在网上看到 ...
- mysql遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题
报错如下: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'sss. ...
- mySql中Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题
报错信息 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'a.id' ...
- MySQL报错“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
解决MySQL5.7版本之后使用GROUP BY语句时报错 问题原因 解决方法 今天使用mysql简单的一句分组查询语句(GROUP BY)报错了. mysql> SELECT * FROM t ...
- mysql报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
原因: https://blog.csdn.net/fansili/article/details/78664267 解决办法: 1:查看mysql配置文件位置 [root@localhost ~]# ...
- 【阿里云 Linux 服务器】mysql 遇到以下问题Expression #1 of SELECT list is not in GROUP BY clause and contains nonag
报错信息如下: Caused by: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY ...
- mysql 报错解决思考Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column
mysql报错: [Err] 1055 - Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggrega ...
- Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
场景 安装了mysql5.7,用group by 查询时抛出如下异常: Expression #1 of SELECT list is not in GROUP BY clause and conta ...
最新文章
- HD-ACM算法专攻系列(3)——Least Common Multiple
- [搬运] iOS 7 侧滑返回手势使用和错误集
- 别吵吵,分布式锁也是锁
- 2017.9.5 组合数学 思考记录
- MySQL学生人数统计小案例
- PyTorch-Transformers:一款可处理最先进NLP的惊人模型库
- Educoder 机器学习 SMO进行优化 第1关:SMO高效优化算法
- 企业如何做好EDM-企业做EDM的方案设计
- paraview参考手册6:远程并行可视化
- uni-app项目的启动
- 用户价值分层——基于RFM模型的研究分析
- 文本框、密码框、文本域
- 深度 | 英伟达Titan Xp出现后,如何为深度学习挑选合适的GPU?这里有份性价比指南
- Excel自定义格式参数
- SQL审核 | 如何利用 OpenAPI 实现自己的扫描任务
- 一文搞定Nginx的安装与高可用配置
- 电脑显示erc服务器不用,实操讲解:如何装饰你的ERC721非同质化资产?
- POJ_2228 Naptime ( 环状dp )
- vue-router的两种模式及区别
- 电脑桌面上做工作计划的便签软件是啥?
热门文章
- Data Guard ORA-16825、ORA-16661解决一例
- Java学习 day 34_HTML
- 工业物联网 SCA-IOT2050快速收集三菱CNC数控系统数据至OPC UA服务器
- 基于Cesium的通视分析的实现
- 识别无效对象和不可用对象
- 360桌面与QQWEB桌面体验对比
- 点聚weboffice插件自定义菜单
- modelsim打开.v文件,modelsim无法打开.v文件
- 事件模拟场景:猫叫-老鼠逃跑 主人惊醒
- Visual C++网络编程经典案例详解 第9章 实用播放器 多线程通信 线程间通信 根据播放列表音乐序号判断mp3播放顺序