在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()
您可以在不禁用的情况下实现相同的效果。 ONLY_FULL_GROUP_BY
用 ANY_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;
添加回答
举报
0/150
提交
取消