SQL查询当前数据以及上一条和下一条三条记录

想查询某个表当前数据以及上一条和下一条的记录,网上找了一下解决办法都不如意,按网上的方法可以查询出三条数据,但是当查询的这条数据没有上一条或下一条记录时就不行了。现在我把解决问题的sql语句放上 :

理一下思路,明确的查询三条语句:

SELECT * FROM 表名 WHERE id IN(当前id的前一个id值,id值,当前id的后一个id值)

在这里说一下为什么是“当前id的前一个id值”而不是“id值-1”,因为当前id的前一个id值不一定是比它小一个值,比如当前id值是6,那前一个id不一定是5,可能是4或者3。


现在说一下“当前id的前一个id值”sql怎么写,查询比当前id值小的所有记录,然后id按倒序排序取第一条,sql:

SELECT * FROM 表名 WHERE id IN(当前id的前一个id值,id值,当前id的后一个id值)


当前id的后一个id值,sql:

SELECT id FROM 表名 WHERE id>id值 ORDER BY id LIMIT 1


整体的sql:

SELECT * FROM 表名 WHERE id IN((SELECT id FROM 表名 WHERE id<id值 ORDER BY id DESC LIMIT 1),id值,(SELECT id FROM 表名 WHERE id>id值 ORDER BY id LIMIT 1))


如果查出的三条记录需要按id排序,可以在语句后面加是order by,sql:

SELECT * FROM 表名 WHERE id IN((SELECT id FROM 表名 WHERE id<id值 ORDER BY id DESC LIMIT 1),id值,(SELECT id FROM 表名 WHERE id>id值 ORDER BY id LIMIT 1)) ORDER BY id


例子:

SELECT * FROM ures WHERE id IN((SELECT id FROM ures WHERE id<4 ORDER BY id DESC LIMIT 1),4,(SELECT id FROM ures WHERE id>4 ORDER BY id LIMIT 1)) ORDER BY id

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值