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

错误1055,选择列表的表达式#1不在GROUP BY子句中

错误1055是MySQL数据库中的一个常见错误,它表示在使用GROUP BY子句进行分组查询时,选择列表中的表达式没有包含在GROUP BY子句中。

在MySQL中,当使用GROUP BY子句对结果进行分组时,SELECT语句中的选择列表必须满足以下两个条件之一:

  1. 选择列表中的每个表达式都必须是分组表达式,也就是说,它们要么是GROUP BY子句中的列,要么是使用聚合函数(如SUM、COUNT、AVG等)计算的结果。
  2. 选择列表中的每个表达式都必须是常量。

如果选择列表中的表达式既不是分组表达式,也不是常量,就会出现错误1055。

解决这个错误的方法有两种:

  1. 将选择列表中的表达式添加到GROUP BY子句中。这样做会将结果按照这些表达式进行分组,从而避免错误1055的出现。

例如,假设有一个名为"orders"的表,包含"order_id"、"customer_id"和"order_date"三个列。现在想要按照"customer_id"进行分组,并计算每个客户的订单数量。正确的查询语句应该是:

代码语言:txt
复制
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id;
  1. 如果选择列表中的表达式不需要进行分组,可以使用聚合函数对其进行计算,或者将其替换为常量。

例如,假设有一个名为"products"的表,包含"product_id"、"product_name"和"price"三个列。现在想要查询每个产品的名称和价格,并计算所有产品的平均价格。正确的查询语句应该是:

代码语言:txt
复制
SELECT product_name, price, AVG(price) AS avg_price
FROM products
GROUP BY product_name, price;

在腾讯云的数据库产品中,推荐使用TencentDB for MySQL来处理MySQL数据库相关的需求。TencentDB for MySQL是腾讯云提供的一种高性能、可扩展的云数据库解决方案,具有高可用性、自动备份、容灾恢复等特性。您可以通过以下链接了解更多关于TencentDB for MySQL的信息:

TencentDB for MySQL产品介绍

希望以上信息对您有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL:解决MySQL5.7以上使用GROUP BY语句时报错

前言 本人使用是MySQL8.0以上 今天在服务器调试接口时候,使用分组查询语句GROUP BY报错了: > 1055 - Expression #1 of SELECT list is not...官网文档原话: 图片 大概意思就是说:拒绝选择列表、HAVING 条件或 ORDER BY 列表引用非聚合列查询,这些列既不在 GROUP BY 子句中命名,也不在功能上依赖于(唯一确定GROUP...标准 SQL MySQL 扩展允许在 HAVING 子句中引用选择列表别名表达式。...在 MySQL 5.7.5 之前,启用 ONLY_FULL_GROUP_BY 会禁用此扩展,因此需要使用非别名表达式编写 HAVING 子句。...解决方法一 1、先使用SQL查询sql_mode select @@global.sql_mode 2、重新设置sql_mode,删除ONLY_FULL_GROUP_BY set @@global.sql_mode

2.6K20

已解决:mysql报错:1055 - this is incompatible with sql_mode=only_full_group_by

mysql查询时报错: [Err] 1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated...column 'tase1.ai.home_url' which is not functionally dependent on columns in GROUP BY clause; this is...默认情况下启用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参考手册”)。...解决思路:将默认“ONLY_FULL_GROUP_BY”配置去掉即可; 可通过 select @@global.sql_mode; 进行查询(如下) ?

5K30
  • 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...错误码发现问题为在mysql配置中如果设置了sql_mode包含ONLY_FULL_GROUP_BY值得话,在进行查询时必须要将select字段都包含在group by 中。...即 select a,b from xxx group by a,b 否则就会报错 方法二: #修改sql_mode语法 通过修改配置文件my.cnf来解决这个问题1....sql_mode常用值: ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,如果在SELECT中列,没有在GROUP BY中出现,那么这个SQL是不合法,因为列不在GROUP BY...从句中   NO_AUTO_VALUE_ON_ZERO: 该值影响自增长列插入。

    38850

    mysql 版本bug

    mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by 在mysql 工具 搜索或者插入数据时报下面错误: ERROR...1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column...我当前Mysql版本5.7.17, 再看一下ONLY_FULL_GROUP_BY意思是:对于GROUP BY聚合操作,如果在SELECT中列,没有在GROUP BY中出现,那么这个SQL是不合法,...因为列不在GROUP BY从句中,也就是说查出来列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。..., 解决方法: 1.只选择出现在group by后面的列,或者给列增加聚合函数;(不推荐) 2.命令行输入: set @@GLOBAL.sql_mode=''; set sql_mode ='STRICT_TRANS_TABLES

    1.4K20

    mysql5.7 group by语法 1055

    先来看如下语句,查询默认存在引擎表 ?  之前使用MySQL版本为5.7以下,根据support进行分组执行语句如下 ? 添加跟分组support无关字段engine ?...1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'information_schema.ENGINES.ENGINE...=only_full_group_by 意思是 SELECT list不在GROUP BY子句中,并且包含非聚合列'information_schema. engine。...在功能上不依赖于GROUP BY子句中列;这与sql_mode=only_full_group_by不兼容 也就是select展示列必须跟group by相关 这就跟oraclegroup by语法一致了...,NO_ENGINE_SUBSTITUTION 修改方式,window编辑my.ini,Linux编辑my.cnf,将[mysqld]中sql_mode值删除ONLY_FULL_GROUP_BY,重启解决

    1.3K20

    MySQL中使用group by出现1055错误解决办法

    注:由于执行sql进行修改方法在重启mysql后会失效,所以本文仅介绍通过修改配置文件从而永久解决该问题办法 在MYSQL中通过GROUP BY查询数据时报错如下 [Err] 1055 - Expression...语法,对数据校验等 解释:ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,如果在SELECT中列,没有在GROUP BY中出现,那么将认为这个SQL是不合法,因为列不在...GROUP BY从句中 因为有only_full_group_by,所以我们要在MySQL中正确使用group by语句的话,只能是select column1(只能是一个字段) from tb1...group by column1(即只能展示group by字段,其他均都要报1055错,如下图) 我们需要修改sql_mode,Linux中操作如下: 修改根目录中/etc中my.cnf...注意要点: (1)配置文件加内容一定要放在[mysqld]标签下; (2)修改my.cnf最好是/etc下,因为按照加载顺序首先加载该目录下

    50710

    Oracle-函数大全

    GREATEST()   exp_list是一列表达式,返回其中最大表达式,每个表达式都被隐含转换第一个表达式数据类型,如果第一个表达式是字符串数据类型中任何一个,那么返回结果是varchar2...LEAST()   exp_list是一列表达式,返回其中最小表达式,每个表达式都被隐含转换第一个表达式数据类型,如果第一个表达式是字符串数据类型中任何一个,将返回结果是varchar2数据类型...这些函数可以在select或selecthaving子句中使用,当用于select串时常常都和GROUP BY一起使用。   AVG([{DISYINCT|ALL}])   返回数值平均值。...SUM([{DISTINCT|ALL}])   返回选择列表项目的数值总和。   VARIANCE([{DISTINCT|ALL}])   返回选择列表项目的统计方差。   ...,组函数不能用于WHERE串中,例如下面的查询是错误错误SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept

    2.5K50

    MySQL从删库到跑路(五)——SQL查询

    左连接结果集包括 LEFT OUTER子句中指定左表所有行,而不仅仅是连接列所匹配行。如果左表某行在右表中没有匹配行,则在相关联结果集行中右表所有选择列表列均为空值。...如果选择不当,非但不能提高查询效率,反而会带来一些逻辑错误或者性能低下。两表连接查询选择方式依据: A、查两表关联列相等数据用内连接。 B、Col_L是Col_R子集时用右连接。...使用group by关键字时,在select列表中可以指定项目是有限制,select语句中仅允许是被分组列,或是为每个分组返回一个值表达式,例如用一个列名作为参数聚合函数。...五、查询 1、带IN关键字查询 IN关键字进行查询时,内层查询语句仅仅返回一个数据列,数据列里值将提供给外层查询语句进行比较操作。...ANY和SOME关键字是同义词,表示满足其中任一条件,允许创建一个表达式对子查询返回值列表进行比较,只要满足内层查询中任何一个比较条件,就返回一个结果作为外层查询条件。

    2.5K30

    为什么 GROUP BY 之后不能直接引用原表中

    GROUP BY 后 SELECT 列限制   标准 SQL 规定,在对表进行聚合查询时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定聚合键、聚合函数(SUM...=only_full_group_by   提示信息:SELECT 列表第二个表达式(cname)不在 GROUP BY 句中,同时它也不是聚合函数;这与 sql 模式:ONLY_FULL_GROUP_BY...为什么 GROUP BY 之后不能直接引用原表(不在 GROUP BY 子句)中列 ? 莫急,我们慢慢往下看。...就会约束:当我们进行聚合查询时候,SELECT 列不能直接包含非 GROUP BY 子句中列。...强行将适用于个体属性套用于团体之上,纯粹是一种分类错误;而 GROUP BY 作用是将一个个元素划分成若干个子集,使用 GROUP BY 聚合之后,SQL 操作对象便由 0 阶"行"变为了 1

    1.7K10

    神奇 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中

    GROUP BY 后 SELECT 列限制   标准 SQL 规定,在对表进行聚合查询时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定聚合键、聚合函数(SUM...=only_full_group_by   提示信息:SELECT 列表第二个表达式(cname)不在 GROUP BY 句中,同时它也不是聚合函数;这与 sql 模式:ONLY_FULL_GROUP_BY...为什么 GROUP BY 之后不能直接引用原表(不在 GROUP BY 子句)中列 ? 莫急,我们慢慢往下看。...GROUP BY 子句中列。...强行将适用于个体属性套用于团体之上,纯粹是一种分类错误;而 GROUP BY 作用是将一个个元素划分成若干个子集,使用 GROUP BY 聚合之后,SQL 操作对象便由 0 阶"行"变为了 1

    2.2K20

    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 列表第二个表达式...(cname)不在 GROUP BY 句中,同时它也不是聚合函数;这与 sql 模式:ONLY_FULL_GROUP_BY 不相容。...BY clause; this is incompatible with sql_mode=only_full_group_by 为什么 GROUP BY 之后不能直接引用原表(不在 GROUP BY...强行将适用于个体属性套用于团体之上,纯粹是一种分类错误;而 GROUP BY 作用是将一个个元素划分成若干个子集,使用 GROUP BY 聚合之后,SQL 操作对象便由 0 阶"行"变为了 1

    3.1K50
    领券