是否有正确的方法:
ID | name
1 | aa
4 | bb
6 | dd
9 | ee
ID是auto_increment的主索引...缺少索引由SQL删除,因此有一些空格
如果我在页面中导航?ID = 4我想使用相同的查询获取上一行(ID为1)和下一行(ID为6)(添加:)
有没有办法在不选择/遍历整个结果集的情况下执行此操作?
提前谢谢你!
答案 0 :(得分:3)
我会做这样的事情(以前的记录):
SELECT * FROM table
WHERE id < @id
ORDER BY id DESC
LIMIT 1
这应该足以让数据库引擎优化查询。
答案 1 :(得分:3)
SELECT * from table where `ID` > 4 ORDER BY `ID` ASC LIMIT 1 /* next */
SELECT * from table where `ID` < 4 ORDER BY `ID` DESC LIMIT 1 /* previous */
答案 2 :(得分:2)
试一试 -
(SELECT * FROM table_name
WHERE id < 4
ORDER BY id DESC
LIMIT 1)
union
(SELECT * FROM table_name
WHERE id > 4
ORDER BY id ASC
LIMIT 1)