MySQL 错误 1055: 'Expression #2 of SELECT list is not in GROUP BY clause' 解决方法
这个错误是因为在使用 GROUP BY 子句时,SELECT 列表中的非聚合列应该包含在 GROUP BY 子句中。解决方法有两种:
- 修改 sql_mode: 可以通过修改 MySQL 的 sql_mode 来解决该问题。将 sql_mode 设置为非 only_full_group_by 模式即可。 可以通过以下命令查看当前的 sql_mode:
SELECT @@sql_mode;
然后可以通过以下命令修改 sql_mode:
SET @@sql_mode = '其他模式';
其中,'其他模式' 是除 only_full_group_by 之外的模式。
- 使用聚合函数: 将 SELECT 列表中的非聚合列改为聚合函数,例如使用 MAX() 函数来获取最大值。修改后的 SQL 语句如下:
SELECT permission_tbl.id, MAX(permission_tbl.'name')
FROM user_tbl
JOIN user_role ON user_tbl.id = user_role.user_id
JOIN role_tbl ON user_role.role_id = role_tbl.id
JOIN role_permission ON role_tbl.id = role_permission.role_id
JOIN permission_tbl ON role_permission.permission_id = permission_tbl.id
WHERE user_tbl.id = '82' GROUP BY permission_tbl.id;
通过以上两种方法中的任意一种,都可以解决这个问题。选择哪种方法取决于你的具体需求和环境。
原文地址: https://www.cveoy.top/t/topic/o1BI 著作权归作者所有。请勿转载和采集!