lIIl 2010-05-06 11:34
浏览 263
已采纳

如何读取数据库某条记录的前后两条记录?这个简单吧?

很常见的一个场景:
假设数据库有个文章表, 里面有3条记录: id=1, title=a1; id=2, title=a2; id=3, title=a3
当我读取id=2的文章显示时, 我需要在左下角显示上一篇文章的标题也就是a1, 在右下角显示下一篇文章的标题a2
那么有什么比较好的办法能在去到id=2的记录时, 同时取到它前后的2条相关记录呢?

我现在用最笨的办法, 通过3次sql取到这3个值:
select * from article where id = 2;
select * from article where id < 2 order by id asc limit 1;
select * from article where id > 2 order by id desc limit 1;

请问还有什么更好的办法吗?
问题补充

抛出异常的爱 写道
select * from article where id > 1 limit 3;

这个...不能精确查找啊...比如我现在要显示id=253的文章...它的前一个id是245, 后一个id为278...因为中间的id可能是文章被删掉了...这样怎么取啊...有什么好的办法吗?
  • 写回答

4条回答 默认 最新

  • m_m1m2m3m4m5 2010-05-06 11:34
    关注

    [quote="by5739"][quote="抛出异常的爱"]select * from article where id > 1 limit 3; [/quote]
    这个...不能精确查找啊...比如我现在要显示id=253的文章...它的前一个id是245, 后一个id为278...因为中间的id可能是文章被删掉了...这样怎么取啊...有什么好的办法吗?[/quote]
    select * from article where id > (select max(id) from article where id < 2 ) limit 3;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 复现论文:matlab仿真代码编写
  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题