1. 程式人生 > >關於MySqL資料庫查詢當前資料的上一條和下一條資料

關於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

執行效果:
這裡寫圖片描述

以上就是這個問題的解決方法,希望對您有所幫助!