MySQL-MySQL中上一篇和下一篇的查询方式?

MySQL-MySQL中上一篇和下一篇的查询方式?

想挽留 发布于 2017-09-02 字数 645 浏览 1132 回复 1

可能重复的问题
如何优化SQL查询当前数据上一条和下一条的记录?

在很多文章详情页面,都会显示上一篇和下一篇文章的链接,或者产品、图片页面显示上一个和下一个的链接,只要点击链接就会跳转过去。那么在这个查询的时候都需要分三条SQL分别查出三个文章的信息,一条是当前页面内容的信息,然后上一页的ID,下一页的ID,很麻烦,也很耗资源,现在想问的是有什么办法可以一次性直接高效的查询出这三条数据信息。

常规做法:

上一篇

select  id  from table where id<10 order by id desc  limit 0,1;

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

归属感 2017-09-14 1 楼

你可以使用union all来实现一条语句取3行数据,但是前提是3个查询的字段要相同

 (select id from table where id < 10 order by id asc limit 1)
union all
(select id from table where id = 10)
union all
(select id from table where id > 10 order by id desc limit 1);

这个查询出来的结果第一行就是上一篇文章,第二行是当前文章,第三行是下一篇文章