Mysql 错误SqlExceptionHelper:146-选择列表的表达式7不在GROUP BY子句中,并且包含未聚合的列

Mysql 错误SqlExceptionHelper:146-选择列表的表达式7不在GROUP BY子句中,并且包含未聚合的列,mysql,Mysql,我无法从服务器上的数据库中获取数据。我使用的是ubantu 16.04和mysql版本14.14发行版5.7.20,用于Linux x86_64,使用的是EditLine包装器。 它显示出错误 2018-01-08 09:18:04 ERROR SqlExceptionHelper:146 - Expression #7 of SELECT list is not in GROUP BY clause and contains nonaggregated column db11.billpa

我无法从服务器上的数据库中获取数据。我使用的是ubantu 16.04和mysql版本14.14发行版5.7.20,用于Linux x86_64,使用的是EditLine包装器。 它显示出错误

2018-01-08 09:18:04 ERROR SqlExceptionHelper:146 - Expression #7 of SELECT
list is not in GROUP BY clause and contains nonaggregated column 
 db11.billpaidde6_.id' which is not functionally dependent on 
columns in GROUP BY clause; this is incompatible with 
 sql_mode=only_full_group_by

我已检查了在本地主机上运行的所有查询,但在服务器上显示了如何解决此问题的错误

您收到此错误,因为sql_模式设置为。此设置意味着,当您选择不以任何方式聚合的数据并且在查询中有GROUP BY时,MySQL将出错

这将在以下情况下生效:

table: users
id | name  | favourite_colour
----------------------------
1  | Fred  | blue
2  | John  | green
3  | David | blue
以下面的查询为例:

SELECT id, favourite_colour FROM users GROUP BY favourite_colour
如果您是MySQL,您会为id列返回什么?对于分组为绿色的行,这是一个简单的选择,因为只有一个聚合。但是,对于蓝色,有2行正在聚合。事实上,MySQL会选择一个id为您显示,但我认为它不可靠

另一个可能触发此错误的查询是:

SELECT * FROM users GROUP BY favourite_colour
这仍然是在选择未以任何方式聚合的列,并且仍然会失败

您可以通过从查询中省略任何未聚合的列,或聚合您可能关心的列来解决此错误

SELECT favourite_colour FROM users GROUP BY favourite_colour
SELECT count(*), favourite_colour FROM users GROUP BY favourite_colour
或者,您可以禁用此SQL模式

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))
上述命令不会永久设置sql_模式全局。请在my.cnf中找到该行或类似行,并仅删除\u FULL\u GROUP\u BY


如果您没有访问服务器的权限,则需要与主机提供商联系,并要求他们仅关闭“完整”组。由于sql模式设置为,因此出现此错误。此设置意味着,当您选择不以任何方式聚合的数据并且在查询中有GROUP BY时,MySQL将出错

这将在以下情况下生效:

table: users
id | name  | favourite_colour
----------------------------
1  | Fred  | blue
2  | John  | green
3  | David | blue
以下面的查询为例:

SELECT id, favourite_colour FROM users GROUP BY favourite_colour
如果您是MySQL,您会为id列返回什么?对于分组为绿色的行,这是一个简单的选择,因为只有一个聚合。但是,对于蓝色,有2行正在聚合。事实上,MySQL会选择一个id为您显示,但我认为它不可靠

另一个可能触发此错误的查询是:

SELECT * FROM users GROUP BY favourite_colour
这仍然是在选择未以任何方式聚合的列,并且仍然会失败

您可以通过从查询中省略任何未聚合的列,或聚合您可能关心的列来解决此错误

SELECT favourite_colour FROM users GROUP BY favourite_colour
SELECT count(*), favourite_colour FROM users GROUP BY favourite_colour
或者,您可以禁用此SQL模式

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))
上述命令不会永久设置sql_模式全局。请在my.cnf中找到该行或类似行,并仅删除\u FULL\u GROUP\u BY


如果您没有访问服务器的权限,则需要与主机提供商联系,要求他们仅关闭\u FULL\u GROUP\u BY。

您正在运行导致此错误的查询。您可以发布它吗?您可能希望将sql_模式从更改为。这在我的本地主机中工作。查询更改是否会解决此问题已解决我的问题您正在运行导致此错误的查询。您可以发布它吗?您可能希望将sql_模式从更改为。这在我的本地主机中工作。查询更改是否可以解决此问题解决了我的问题我尝试了简单的一组全局sql\u mode=SELECT REPLACE@@sql\u mode,'ONLY\u FULL\u GROUP\u BY',这没有任何作用选择@@sql\u mode的结果是什么?我还使用说明更新了答案,以使此更改永久化。我将获得“选择@@sql\u模式”;只有完整的分组依据、严格的转换表、日期中没有零值、日期中没有零值、除法错误、没有自动创建用户、没有引擎替换|我尝试了简单的一组全局sql模式=选择替换@sql模式、“仅完整分组依据”,这没有任何作用选择@sql模式的结果是什么?我还使用说明更新了答案,以使此更改永久化。我将获得“选择@@sql\u模式”;仅\u完整\u分组\u依据、严格\u转换\u表格、无\u零\u输入日期、无\u零日期、错误\u按\u零除\u、无\u自动创建\u用户、无\u引擎\u替换|