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 5.7.5后only_full_group_by成为sql_mode的默认选项之一,这可能导致一些sql语句失效。
进入 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 的命令,结果如下图所示:
4. 相关链接
only_full_group_by
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 魔兽世界蓝贴:史诗安苏雷克女王调整
- 群星《涂鸦低音炮1》黑胶精选 [WAV+CUE][1G]
- 容祖儿《小小》香港首版 [WAV+CUE][1.1G]
- 费玉清《天之大》SONY台湾版 [WAV+CUE][1G]
- 英雄联盟双城之战第二季主题曲谁唱的 双城之战2主题曲演唱歌手介绍
- 逆水寒2024双11活动有什么 2024双11特惠活动开始时间
- 宝可梦大集结国服和国际服有什么区别 大集结国服vs国际服
- YelenaEckemoff-RomanceoftheMoon(2024)[24-WAV]
- 群星《发烧醉乐坊太湖美(民乐典范)》[WAV+CUE]
- 中国发烧名盘《中国管弦-九州之韵》DTS[WAV]
- V社官宣推出白色限量版Steam Deck!11月18日上市
- 梦回2016!《守望先锋2》限时推出6v6怀旧模式
- 吴京谈《镖人》拍摄过程:演员们打得很爽 文戏也过瘾
- 林家谦.2024-ISFP【FLAC分轨】
- 群星.1996-摇滚柔情【正大国际】【WAV+CUE】