首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL遇见SELECT list is not in GROUP BY clause and contains nonaggre的问题

目录 报错现象 原因 解决方法 报错现象 执行SQL报错如下: SELECT student.s_no,student.s_name,SUM(result.mark) FROM student,result...WHERE student.s_no=result.s_no GROUP BY student.s_no > 1055 - Expression #2 of SELECT list is not in...如果启用了ONLY_FULL_GROUP_BY SQL模式(默认开启),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们...(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。)...解决方法 方法一 使用命令行或者数据库客户端执行SQL 1.SQL语句,select @@global.sql_mode查询 mysql> select @@global.sql_mode; +--

2.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL出现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 ‘...with  sql_mode=only_full_group_by 问题出现的原因: MySQL 5.7.5及以上功能依赖检测功能。...如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们...(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。)...解决方法一: 打开navcat, 用sql查询: select @@global.sql_mode 查询出来的值为: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES

2K00

MySQL报错1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated colu

以上的版本中,对于 group by 的这种聚合操作,如果在select 中的列,没有在group by 中出现,那么这个SQL是不合法的,因为列不在group by的从句中,所以对于设置了这个mode...的数据库,在使用group by 的时候,就要用MAX(),SUM(),ANT_VALUE()的这种聚合函数,才能完成GROUP BY 的聚合操作 参考文档: https://dev.mysql.com...select @@version #查看sql_mode的语法 SELECT @@GLOBAL.sql_mode; SELECT @@SESSION.sql_mode; 显示结果: ONLY_FULL_GROUP_BY...1055错误码发现问题为在mysql的配置中如果设置了sql_mode包含ONLY_FULL_GROUP_BY值得话,在进行查询时必须要将select的字段都包含在group by 中。...sql_mode常用值: ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY

34550

GROUP BY 后 SELECT 列的限制:which is not functionally dependent on columns in GROUP BY clause

GROUP BY 后 SELECT 列的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定的聚合键、聚合函数(SUM 、...SELECT cno,cname,count(sno),MAX(sno) FROM tbl_student_class GROUP BY cno; 执行报错了,提示信息:SELECT 列表中的第二个表达式...[Err] 1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column...SQL 模式主要分两类:语法支持类和数据检查类,常用的如下 语法支持类    ONLY_FULL_GROUP_BY 对于 GROUP BY 聚合操作,如果在 SELECT 中的列、HAVING 或者...是有自己的默认模式的;版本不同,默认模式也不同 -- 查看 MySQL 版本 SELECT VERSION(); -- 查看 sql_mode SELECT @@sql_mode; -- 设置宽松模式

3K50

MySQL报错1055 – Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated 解决方法

2、产生原因 产生原因说是,在MySQL数据库版本为5.7以上的版本,默认开启了 ONLY_FULL_GROUP_BY SQL模式,在此模式下,对于group by操作,如果在select语句中的查询列没有在...group by中出现,那么这个SQL就是非法的,因为列不在group by语句中,所以设置了sql_mode=only_full_group_by的数据库,在使用group by时就会报错。...3、问题解决   既然是 MySQL配置问题,找到了原因,就好对症下药进行解决了。...方法一:   在Navicat中,输入下列SQL语句进行查询: SELECT @@GLOBAL.sql_mode;   查询结果如下: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES...方法二:   除了上面的手动设置sql_mode值之外,还可以在 MySQL 的配置文件中进行设置。

1.1K10

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 5.7默认启用ONLY_FULL_GROUP_BY...特性,即:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现否则就会报错...解决方法 在mysql的配置文件的最后强制设置sql_mode,把默认的ONLY_FULL_GROUP_BY去掉。...,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 修改mysql的配置文件,在文件最底部加上: [mysqld] [mysqld] sql_mode=STRICT_TRANS_TABLES...NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 重新启动mysql

2.8K30

MySQL Group Replication部署

MySQL Group Replication是MySQL官方提供的一种高可用性集群解决方案,它采用基于Paxos协议的同步复制架构,并支持自动故障转移和自动节点加入。...下面是一个简要的MySQL Group Replication集群部署文档,包括几个主要步骤。确认环境准备在开始部署之前,需要确保各个服务器之间可以互相通信,并且已经正确安装和配置了MySQL。...修改完配置文件后,需要重启MySQL服务器以使配置生效。配置MySQL Group Replication在各个服务器上,需要启动MySQL Group Replication服务。...;SET GLOBAL group_replication_bootstrap_group=OFF;这条命令会启动MySQL Group Replication服务,并将当前节点加入到集群中。...测试MySQL Group Replication功能在完成上述步骤后,可以测试MySQL Group Replication功能是否正常。

47520

MySQLSELECT …for update

最近的项目中,因为涉及到Mysql数据中乐观锁和悲观锁的使用,所以结合项目和网上的知识点对乐观锁和悲观锁的知识进行总结。...要使用悲观锁,我们必须关闭mysql数据库的自动提交属性。 set autocommit=0;   //设置完autocommit后,我们就可以执行我们的正常业务了。...补充:MySQL select…for update的Row Lock与Table Lock   上面我们提到,使用select…for update会把数据给锁住,不过我们需要注意一些锁的级别,MySQL...InnoDB默认Row-Level Lock,所以只有「明确」地指定主键,MySQL 才会执行Row lock (只锁住被选取的数据) ,否则MySQL 将会执行Table Lock (将整个数据表单给锁住...select * from person where id>=2 for UPDATE   以上就是关于数据库主键对MySQL锁级别的影响实例,需要注意的是,除了主键外,使用索引也会影响数据库的锁定级别

3.7K30
领券