4

有没有合适的方法来做到这一点:

ID | name
 1 | aa
 4 | bb
 6 | dd
 9 | ee

ID 是具有 auto_increment 的主索引...缺少的索引已被 SQL 删除,因此有一些空格

如果我在 page?ID=4 中导航,我想使用相同的查询获取上一行(ID 为 1)和下一行(ID 为 6)(添加:)

有没有办法在不选择/遍历整个结果集的情况下做到这一点?

先感谢您!

4

3 回答 3

3

我会做这样的事情(以前的记录):

SELECT * FROM table
WHERE id < @id
ORDER BY id DESC
LIMIT 1

这应该是数据库引擎优化查询的足够信息。

于 2012-04-11T10:30:17.337 回答
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 */
于 2012-04-11T10:30:42.233 回答
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)
于 2012-04-11T10:38:58.617 回答