Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 't1.uid' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 中文回答
时间: 2023-07-21 10:01:09 浏览: 181
这个错误是由于 MySQL 的 `sql_mode` 设置为 `only_full_group_by` 导致的。在此模式下,如果在 GROUP BY 子句中的列之外的 SELECT 列表中使用了非聚合列,并且这些列与 GROUP BY 列之间没有函数依赖关系,就会出现这个错误。
简单来说,当你在 GROUP BY 子句中列出的列之外的 SELECT 列表中使用了非聚合列,并且这些列与 GROUP BY 列之间没有函数依赖关系时,就会出现此错误。
例如,假设有一个表 t1 包含 uid 和 name 两列,你执行了以下查询:
```sql
SELECT uid, name
FROM t1
GROUP BY name
```
但是,你的 `sql_mode` 设置为 `only_full_group_by`,这将导致上述错误。因为在 GROUP BY 子句中只列出了 name 列,但 SELECT 列表中同时包含了 uid 列,且 uid 列与 name 列之间没有函数依赖关系。
为了解决这个问题,你可以考虑以下几种方法:
1. 将 uid 列添加到 GROUP BY 子句中,如果你想按照 uid 和 name 进行分组。
2. 使用聚合函数来计算 uid 列,例如使用 MAX(uid)。
3. 修改 `sql_mode` 设置,将其更改为不包含 `only_full_group_by` 或者更改为其他兼容的模式。
请注意,在某些情况下,你可能需要仔细考虑你的查询逻辑,确保 SELECT 列表中的表达式与你的需求和预期匹配,以避免错误。
阅读全文