关于MySqL数据库查询当前数据的上一条和下一条数据

这里写图片描述
如上图所示第14行数据的上一条和下一条,id都不是连续的,因此意图通过id-1或者id+1是肯定行不通的,那么怎么办呢?其实也简单就是查询比id=14小的元素中的最大值,比id=14大的元素中的最小值。

select * from tb_user where id in
(select
case 
when SIGN(id-14)>0 THEN MIN(id)
when SIGN(id-14)<0 THEN MAX(id)
ELSE id
end 
from tb_user

GROUP BY SIGN(id-14)
ORDER BY SIGN(id-14)
)
ORDER BY id

运行效果:
这里写图片描述

select * from tb_user where id in
(select
case 
when SIGN(id-14)>0 THEN MIN(id)
when SIGN(id-14)<0 THEN MAX(id)
end 
from tb_user
where id !=14
GROUP BY SIGN(id-14)
ORDER BY SIGN(id-14)
)
ORDER BY id

运行效果:
这里写图片描述

以上就是这个问题的解决方法,希望对您有所帮助!

猜你喜欢

转载自blog.csdn.net/w252064/article/details/79925017