文章标题 原创 翻译 转载 文章内容 这个需求跟文章的上一篇和下一篇导航很相似,根据当前的ID查找最近的上一个和下一个记录,可以根据ID也可以根据其他如时间字段来判断。 如有n条记录ID不是连续的:1,4,6,7,13,查找ID为4的上一个和下一个记录,那分别就是1和6了。 这里有好几种方法,根据实际情况选择合适的。 # 方法一 上一条: ``` select * from posts where id = (select max(id) from posts where id < 4) ``` 下一条: ``` select * from posts where id = (select min(id) from posts where id > 4) ``` # 方法二 上一条: ``` SELECT * FROM posts WHERE id < 4 ORDER BY id DESC LIMIT 1; ``` 下一条: ``` SELECT * FROM posts WHERE id > 4 ORDER BY id LIMIT 1; ``` # 方法三 一次查询搞定 ``` select * from posts where ( id = IFNULL((select min(id) from posts where id > 4),0) or id = IFNULL((select max(id) from posts where id < 4),0) ) ``` 文章类别 Python Mobile Android Java Shell Life Database Bug Windows IOS Tools Boost Node.js Mac Product Tips C/C++ Golang Javascript React Qt MQ MongoDB Design Web Linux LLM ChatGPT RAG AI 提交