【发布时间】:2016-03-10 23:16:35
【问题描述】:
我已经升级了我的系统,并为我正在开发的 Web 应用程序安装了带有 php 的 MySql 5.7.9。我有一个动态创建的查询,当在旧版本的 MySql 中运行时它工作正常。自从升级到 5.7 后出现此错误:
SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含 非聚合列“support_desk.mod_users_groups.group_id”是 在功能上不依赖于 GROUP BY 子句中的列;这是 与 sql_mode=only_full_group_by 不兼容
请注意有关 Server SQL Modes 主题的 Mysql 5.7 手册页。
这是给我带来麻烦的查询:
SELECT mod_users_groups.group_id AS 'value',
group_name AS 'text'
FROM mod_users_groups
LEFT 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 选项吗,或者我还需要做些什么吗?
如果您需要更多信息,请告诉我。
【问题讨论】:
-
在这里我找到了解决方案stackoverflow.com/a/7588442/612987
-
这一定是我遇到过的最复杂的错误信息。
-
@Rolf 您是否在 Oracle 中看到过相同类型问题的错误? “
not a GROUP BY expression”就是这样。他们可能只是有一个数字错误代码而根本没有消息。 -
我很幸运在我的选择查询前面加上“创建临时表 temp”,然后从第二个查询“select * from temp”得到结果,然后最后一个查询清理“drop table if exists temp” ”。如果这值得任何代表,也许我会得到足够的答案。
标签: mysql sql group-by mysql-error-1055