没有合适的资源?快使用搜索试试~ 我知道了~
MySQL中使用group by 是总是出现1055的错误(推荐)
0 下载量 90 浏览量
2020-12-14
08:48:59
上传
评论
收藏 74KB PDF 举报
温馨提示
试读
2页
因为在MySQL中使用group by 是总是出现1055的错误,这就导致了必须去查看是什么原因了,查询了相关的资料,现在将笔记记录下来,以便后面可以参考使用: sql_mode:简而言之就是:它定义了你MySQL应该支持的sql语法,对数据的校验等等 select @@sql_mode:使用该命令我们可以查看我们当前数据库的sql_mode mysql> select @@sql_mode; +---------------------------------------------------------------------------------------------------
资源推荐
资源详情
资源评论
MySQL中使用中使用group by 是总是出现是总是出现1055的错误的错误(推荐推荐)
因为在MySQL中使用group by 是总是出现1055的错误,这就导致了必须去查看是什么原因了,查询了相关的资料,现在将笔记记录下来,以便后面可以参考
使用:
sql_mode:简而言之就是:它定义了你MySQL应该支持的sql语法,对数据的校验等等
select @@sql_mode:使用该命令我们可以查看我们当前数据库的sql_mode
mysql> select @@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode |
+-------------------------------------------------------------------------------------------------------------------------------------------+
|
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
下面我们来看看sql_mode的各个值的含义:
ONLY_FULL_GROUP_BY:
对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么将认为这个SQL是不合法的,因为列不在GROUP BY从句中
因为有only_full_group_by,所以我们要在MySQL中正确的使用group by语句的话,只能是select column1 from tb1 group by column1(即只能展示group by的
字段,其他均都要报1055的错)
实例:
mysql> select * from tt1;
+----+-------+--------+
| id | name | gender |
+----+-------+--------+
| 1 | xiong | 0 |
| 2 | ying | 0 |
| 3 | cai | 0 |
| 4 | zhang | 0 |
| 5 | li | 1 |
| 6 | wang | 1 |
+----+-------+--------+
6 rows in set (0.00 sec)
mysql> select id,name from tt1 group by name;
ERROR 1055 (42000):
mysql> select * from tt1;
+----+-------+--------+
| id | name | gender |
+----+-------+--------+
| 1 | xiong | 0 |
| 2 | ying | 0 |
| 3 | cai | 0 |
| 4 | zhang | 0 |
| 5 | li | 1 |
| 6 | wang | 1 |
+----+-------+--------+
6 rows in set (0.00 sec)
mysql> select name from tt1 group by name;
+-------+
| name |
+-------+
| cai |
| li |
| wang |
| xiong |
| ying |
| zhang |
+-------+
6 rows in set (0.00 sec)
所以我们要使用能正确的使用group by 的话就必须删除掉only_full_group_by
set sql_mode=(select replace(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 可以使用该语句来将空格替换掉only_full_group_by,这样我们就可以使用
mysql> SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Query OK, 0 rows affected (0.00 sec)
mysql> select id,name from tt1 group by name;
+----+-------+
| id | name |
+----+-------+
| 3 | cai |
| 5 | li |
| 6 | wang |
| 1 | xiong |
| 2 | ying |
| 4 | zhang |
资源评论
weixin_38656662
- 粉丝: 2
- 资源: 898
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功