为了账号安全,请及时绑定邮箱和手机立即绑定

在MySQL中执行查询时只与_FULL_GROUY相关的错误

在MySQL中执行查询时只与_FULL_GROUY相关的错误

宝慕林4294392 2019-05-30 16:58:36
在MySQL中执行查询时只与_FULL_GROUY相关的错误我已经升级了我的系统,并为我正在开发的Web应用程序安装了MySQL5.7.9和php。我有一个动态创建的查询,当在MySQL的旧版本中运行时,它工作得很好。从升级到5.7,我得到了以下错误:SELECT List的表达式#1不在GROUP BY子句中,而是包含非聚合列‘Support_Desk.mod_user_groups.group_id’,该列在功能上不依赖于GROUP BY子句中的列;这与SQL_MODE=Only_FULL_GROU请注意MySQL 5.7的手册页,主题是服务器SQL模式.这是一个给我带来麻烦的查询:SELECT mod_users_groups.group_id AS 'value',         group_name AS 'text' FROM mod_users_groupsLEFT JOIN mod_users_data ON mod_users_groups.group_id = mod_users_data.group_id  WHERE  mod_users_groups.active = 1    AND mod_users_groups.department_id = 1    AND mod_users_groups.manage_work_orders = 1    AND group_name != 'root'    AND group_name != 'superuser' GROUP BY group_name  HAVING COUNT(`user_id`) > 0 ORDER BY group_name我在这个问题上做了一些搜索,但我不明白only_full_group_by足够了解我需要做什么来修复查询。我能不能关掉only_full_group_by还有别的事我需要做吗?如果你需要更多的信息,请告诉我。
查看完整描述

4 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

使用ANY_VALUE()若要引用非聚合列,请执行以下操作。

从…MySQL 5.7文档:

您可以在不禁用的情况下实现相同的效果。ONLY_FULL_GROUP_BYANY_VALUE()若要引用非聚合列,请执行以下操作。

...

此查询可能与ONLY_FULL_GROUP_BY启用,因为选择列表中的非聚合地址列在GROUP BY条款:

SELECT name, address, MAX(age) FROM t GROUP BY name;

...

如果您知道,对于给定的数据集,每个名称值实际上唯一地决定了地址值,那么地址实际上在功能上依赖于名称。要让MySQL接受查询,可以使用ANY_VALUE()职能:

SELECT name, ANY_VALUE(address), MAX(age) FROM t GROUP BY name;


查看完整回答
反对 回复 2019-05-30
  • 4 回答
  • 0 关注
  • 579 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信