摘要:教程所示图片使用的是仓库图片,网速过慢的朋友请移步原文无法选取非聚合列。如果当前文章的索引值是,那么可以通过以下命令来得到前后相邻的篇文章无法选取聚合列在执行上面命令时,给了我个的报错。
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)Mysql 无法选取非聚合列。
更多讨论或者错误提交,也请移步。
1. 前言最近升级博客,给文章页面底部增加了两个按钮,可以直接跳转到上一篇和下一篇。如下图所示:
实现这个功能的难点在于:_数据库怎么选取出一条记录的前后两条相邻的记录?_2. 数据库设计
关于我文章数据库的设计如下图所示:
可以看到,每条记录的身份是索引Id。因为之前有很多文章记录被删除了,所以,Id并不是连续的。
如果当前文章的索引值是33,那么可以通过以下命令来得到前后相邻的 2 篇文章:
select * from passage where id in (select case when SIGN(id - 32 )>0 THEN MIN(id) when SIGN(id - 32 )<0 THEN MAX(id) end from passage where id != 34 GROUP BY SIGN(id- 32 ) ORDER BY SIGN(id- 32 ) ) ORDER BY id;3. 无法选取聚合列
在执行上面命令时,Mysql给了我个: SELECT list is not in GROUP BY clause ... 的报错。经过 Google 得知,mysql 5.7以上,默认启动了only_full_group_by,MySQL 就会拒绝选择列表、条件或顺序列表引用的查询。
以下是原文:
Reject queries for which the select list, HAVING condition, or ORDER BY list refer to nonaggregated columns that are neither named in the GROUP BY clause nor are functionally dependent on (uniquely determined by) GROUP BY columns.
As of MySQL 5.7.5, the default SQL mode includes ONLY_FULL_GROUP_BY. (Before 5.7.5, MySQL does not detect functional dependency and ONLY_FULL_GROUP_BY is not enabled by default. For a description of pre-5.7.5 behavior, see the MySQL 5.6 Reference Manual.)
所以,我们应该设置sql_mode中不包含only_full_group_by选项。
进入 mysql 配置文件,在[mysqld]部分中添加以下配置,并且重启 mysql 即可。
[mysqld] # ... other config sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION # delete "only_full_group_by" # ... other config
运行本文第二部分的 mysql 的命令,结果如下图所示:
only_full_group_by
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/48014.html
摘要:数据规整化清理转换合并重塑数据聚合与分组运算数据规整化清理转换合并重塑合并数据集可根据一个或多个键将不同中的行链接起来。函数根据样本分位数对数据进行面元划分。字典或,给出待分组轴上的值与分组名之间的对应关系。 本篇内容为整理《利用Python进行数据分析》,博主使用代码为 Python3,部分内容和书本有出入。 在前几篇中我们介绍了 NumPy、pandas、matplotlib 三个...
摘要:数据检索有两种主要形态。所以,回归本质,影响数据检索效率的就那么几个因素。数据检索干的是什么事情定位加载变换找到所需要的数据,把数据从远程或者磁盘加载到内存中。减少的数据量的两个手段,聚合和抽样。 数据检索有两种主要形态。第一种是纯数据库型的。典型的结构是一个关系型数据,比如 mysql。用户通过 SQL 表达出所需要的数据,mysql 把 SQL 翻译成物理的数据检索动作返回结果。第...
摘要:数据检索有两种主要形态。所以,回归本质,影响数据检索效率的就那么几个因素。数据检索干的是什么事情定位加载变换找到所需要的数据,把数据从远程或者磁盘加载到内存中。减少的数据量的两个手段,聚合和抽样。 数据检索有两种主要形态。第一种是纯数据库型的。典型的结构是一个关系型数据,比如 mysql。用户通过 SQL 表达出所需要的数据,mysql 把 SQL 翻译成物理的数据检索动作返回结果。第...
阅读 2017·2021-11-24 11:15
阅读 2880·2021-11-24 10:46
阅读 1161·2021-11-24 09:39
阅读 3649·2021-08-18 10:21
阅读 1306·2019-08-30 15:53
阅读 1281·2019-08-30 11:19
阅读 3193·2019-08-29 18:42
阅读 2213·2019-08-29 16:58