[Err] 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated colum...
时间: 2023-10-12 20:20:19 浏览: 198
这个错误通常发生在MySQL中,因为MySQL对于GROUP BY查询有一些特殊的限制。
当你在SELECT语句中使用了GROUP BY子句时,MySQL要求在SELECT列表中包含GROUP BY子句中的所有列或者使用聚合函数(如SUM、COUNT、AVG等)对其他列进行聚合。这是为了保证查询结果的正确性。
你可以尝试在SELECT语句中将所有列都包含在GROUP BY子句中,或者使用聚合函数对其他列进行聚合。例如:
```
SELECT column1, column2, SUM(column3)
FROM table
GROUP BY column1, column2
```
这样就可以避免这个错误了。
相关问题
[Err] 1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
### 解决 MySQL 中由于 `sql_mode=only_full_group_by` 导致的分组查询错误
在 MySQL 中,当启用了 `sql_mode=only_full_group_by` 模式时,执行分组查询(`GROUP BY`)时可能会遇到错误。这是因为该模式要求所有未聚合的列必须出现在 `GROUP BY` 子句中[^1]。
如果需要解决此问题,可以采取以下方法:
#### 方法一:调整 SQL 查询
确保所有未聚合的列都包含在 `GROUP BY` 子句中。例如:
```sql
SELECT column1, column2, COUNT(*)
FROM table_name
GROUP BY column1, column2;
```
#### 方法二:修改 sql_mode 设置
可以通过修改 MySQL 的 `sql_mode` 来禁用 `ONLY_FULL_GROUP_BY`。具体操作如下:
- 在 MySQL 配置文件(如 `my.cnf` 或 `my.ini`)中添加或修改以下内容:
```ini
[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
```
- 如果需要临时修改,可以在 MySQL 客户端中运行以下命令:
```sql
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
```
---
### 修复表 `'io离散'` 被标记为已崩溃的问题
当表被标记为已崩溃时,通常是因为底层存储引擎(如 MyISAM)中的索引文件损坏。以下是几种修复方法:
#### 方法一:使用 `REPAIR TABLE` 语句
可以直接在 MySQL 客户端中执行以下命令来尝试修复表:
```sql
REPAIR TABLE `io离散`;
```
此命令适用于 MyISAM 引擎的表,并会尝试修复表的索引和数据结构[^3]。
#### 方法二:使用 `myisamchk` 工具
如果上述方法无效,可以使用 MySQL 提供的 `myisamchk` 工具进行修复。步骤如下:
1. 确保 MySQL 服务已停止。
2. 执行以下命令:
```bash
myisamchk -r -v /path/to/database/io离散.MYI
```
此命令会对指定的 `.MYI` 文件进行详细检查并尝试修复。
#### 方法三:通过 PhpMyAdmin 修复
如果更倾向于图形化界面,可以通过 PhpMyAdmin 进行修复。选择对应的数据库和表后,在操作选项中找到“修复表”功能并执行。
---
### 注意事项
- 在执行任何修复操作之前,建议备份相关数据以防止数据丢失。
- 如果表频繁崩溃,可能需要考虑将存储引擎从 MyISAM 更改为 InnoDB,因为 InnoDB 提供了更强的数据一致性和崩溃恢复能力[^2]。
---
[Err] 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘bxj_face_big_data.i.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
[Err] 1055 - Expression #1055 异常是一种 MySQL 数据库错误。这通常表明在执行查询时发生了一个错误,并且查询无法完成。这可能是由于查询语法错误、数据库对象名称错误或其他因素导致的。为了解决这个问题,您可以尝试检查查询语法、确保您使用的数据库对象名称是正确的,并且确保您有足够的权限来执行此查询。
阅读全文
相关推荐










