首页
学习
活动
专区
工具
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
您找到你想要的搜索结果了吗?
是的
没有找到

秒懂mysqlgroup by用法

name FROM test GROUP BY name 你应该很容易知道运行结果,没错,就是下表2: 可是为了能够更好理解“group by”多个列“和”聚合函数“应用,我建议在思考过程...,由表1到表2过程,增加一个虚构中间表:虚拟表3。...2.FROM test Group BY name:该句执行后,我们想象生成了虚拟表3,如下所图所示,生成过程是这样group by name,那么找name那一列,具有相同name值行,合并成一行...(1)如果执行select *的话,那么返回结果应该是虚拟表3,可是id和number中有的单元格里面的内容是多个值,那么id跟number会返回各自单元格排序第一个值。...(4)例如我们执行select name,sum(number) from test group by name,那么sum就对虚拟表3number列每个单元格进行sum操作,例如对name为aa那一行

2.3K20

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 列表第二个表达式...SQL 模式主要分两类:语法支持类和数据检查类,常用的如下 语法支持类    ONLY_FULL_GROUP_BY 对于 GROUP BY 聚合操作,如果在 SELECT 列、HAVING 或者...,其实表示是一个空值,相当于没有什么模式设置,可以理解为宽松模式。...SELECT 子句中不能直接引用原表原因;   3、一般来说,单元素集合属性和其唯一元素属性是一样

3K50

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...ONLY_FULL_GROUP_BY设定,将不允许查询字段包括非聚集列 查询mysql服务器版本:以下命令在终端或者navicat输入执行均可。...1055错误码发现问题为在mysql配置如果设置了sql_mode包含ONLY_FULL_GROUP_BY值得话,在进行查询时必须要将select字段都包含在group by 。...关闭正在运行mysql 2. 修改/etc/my.cnf,将sql_mode=only_full_group_by给删掉 3....sql_mode常用值: ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,如果在SELECT列,没有在GROUP BY中出现,那么这个SQL是不合法,因为列不在GROUP BY

34550

分组查询时,select字段是否一定要都在group by?

一般情况下,我们在使用group by时候,select列都要出现在group by,比如select id,name,age from tuser group by id,name,age,那么我们是不是都要严格按照这种模式来写...列都出现在group by,通过下面的结果可以看出是可以正常执行。...大致意思是:如果name列是主键或者是唯一非空列,name上面的查询是有效。这种情况下,MySQL能够识别出select列依赖于group by列。...,也可以不用在group byselect字段全部列出来。...ONLY_FULL_GROUP_BY 我们在上面提到select列都出现在group by,其实在MySQL5.7.5之前是没有此类限制,5.7.5版本在sql_mode增加了ONLY_FULL_GROUP_BY

5.4K20

MySQL concat() 以及 group_concat() 使用

返回结果为连接参数产生字符串,如果有任何一个参数为null,则返回值为null。 准备:我们新建一个my_test表,并插入测试数据: SELECT * FROM `my_test`; ?...例2:在例1结果中三个字段 id, username, password 组合没有分隔符,我们可以加一个逗号作为分隔符: select concat (id, ',', username, ',',...三、group_concat()函数 前言:在有group by查询语句中,select指定字段要么就包含在group by语句后面,作为分组依据,要么就包含在聚合函数。...例5:查询该数据并根据性别分组: select sex, id, username from my_test group by sex; ?...——使用group_concat() 例6:查询数据分组并获取每个组别详细数据: select sex, group_concat(id) as ids, group_concat(username

2.6K30

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时就会报错。...方法一:   在Navicat,输入下列SQL语句进行查询: SELECT @@GLOBAL.sql_mode;   查询结果如下: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES...方法二:   除了上面的手动设置sql_mode值之外,还可以在 MySQL 配置文件中进行设置。   ...2、对于windows系统,进行 MySQL安装目录下,找到 my.ini 文件,同样在配置文件搜索sql_mode关键字,         若未搜索到,则需要在  [mysqld] 配置手动添加进去

1.1K10

MySQLSELECT …for update

那么在这个过程,因为goods被锁定了,就不会出现有第三者来对其进行修改了。要使用悲观锁,我们必须关闭mysql数据库自动提交属性。...注:需要注意是,在事务,只有SELECT … FOR UPDATE 或LOCK IN SHARE MODE 相同数据时会等待其它事务结束后才执行,一般SELECT … 则不受此影响。...我在另外事务如果再次执行select status from t_goods where id=1 for update;则第二个事务会一直等待第一个事务提交,此时第二个查询处于阻塞状态,但是如果我是在第二个事务执行...补充:MySQL select…for updateRow Lock与Table Lock   上面我们提到,使用select…for update会把数据给锁住,不过我们需要注意一些锁级别,MySQL...select * from person where id>=2 for UPDATE   以上就是关于数据库主键对MySQL锁级别的影响实例,需要注意是,除了主键外,使用索引也会影响数据库锁定级别

3.7K30

Mysql(11)——group by用法

group by作用是将字段相等分为一组: (1)直接用法 ? 如上:可以见得:将两种数据分了出来:0和1。 (2)与group_concat()联用 ?...group_concat()作用是统计每个分组(如上即is_deleted分组)指定字段(即name)信息集合,每个信息之间(即name信息)使用逗号进行分割,这样就可以直观地看出当is_deleted...=0和is_deleted=1分别对应name。...这样就可以看出is_deleted=0和is_deleted=1时各自id平均数。 (4)与having联用 having是和group by联用用来过滤分组数据: ?...(5)与with rollup联用 with rollup作用是再输出结果后增加一行不分组(即select方法直接聚合函数查询)用聚合函数得到结果: ?

1.3K40

Django model select各种用法详解

Django model update各种用法介绍》文章介绍了Django model各种update操作,这篇文章就是她姊妹篇,详细介绍Django model select用法,配以对应...MySQL查询语句,理解起来更轻松。...10,包含20),也没有对应SQL,参考上边SQL写法 User.objects.all()[10:20] # 分组,group by,对应SQL:select username,count(1)...name='运维咖啡吧') 通常更多时候我们用Q来做搜索逻辑,比如前台搜索框输入一个字符,后台去数据库检索标题或内容是否包含 _s = request.GET.get('search') _t...能用ORM就用它ORM吧,不建议执行原生SQL,可能会有一些安全问题,如果实在是SQL太复杂ORM实现不了,那就看看下边执行原生SQL方法,跟直接使用pymysql基本一致了 from django.db

1.1K30
领券