mysql怎么实现查询文章相邻的上一篇和下一篇功能?

卖豆浆不卖油条 发布于 2012/06/28 21:10
阅读 2K+
收藏 4

最近做系统时需要在某篇文章的底部显示上一篇文章标题和下一篇文章标题(如下图),用的是mysql数据库,找了些资料,但都不甚满足要求,特问问大家,看有没有什么好的方法。

常见的是这种方法:

(select * from articles where id < #id# order by id desc limit 1)
union all 
(select * from articles where id > #id# order by id limit 1)

这种方法有一个局限性,如果我文章列表有一个字段是 isrec 文章推荐 字段,取值为1时为推荐状态,为0时不推荐。推荐时按id降序排列到最前面,也就是排序语句为 order by isrec desc,id desc 这样上面的这个方法就不适用了。

另一种是写存储过程,但维护起来比较麻烦,所以直接放弃。

大家看有没有什么好的方法,说说看。

ps:我已经找到一种比较好的方案,大家先实现实现,稍后放出来。

大家也可让 @红薯 把oschina的这个功能给大家放出来看看,是怎么实现的。

加载中
0
红薯
红薯
就是你说的这么干的:)
0
龙上
龙上
一般都这样干吧..
0
被风遗忘
被风遗忘

我期待你更好的方法

 

0
卖豆浆不卖油条
卖豆浆不卖油条
兄弟们顶起来啊,大家说说看法啊
0
AName
AName
我也是这么干的,期待好方法
0
S
SODAER

select * from articles where id > $id order by id desc limit 3

查出之后把二维数组里面的id号按照自己的需求记录下最外层key(方便模板调用),这样的话查询一次数据库就行了,查询出的数组一定要从新定义排序不能立刻使用,因为你不确定数据库中会有几条记录,一条和两条的排序是截然不同的

0
S
SODAER
少个‘=’号  ,,,是>= $id
0
ayesd
ayesd

我有种方法,不知道效率如何

第一步:查询该记录所在位置,得到count

第二步:查询count+1到count-1的三条记录

不知道是否可以

0
x
xiang_lele

单sql 语句查询数量为 1条数据时 该怎么判断他是第一条,还是最后一条

0
x
xiang_lele
楼主把你的方法放出来看看吧
返回顶部
顶部