0

我的页面看起来像:

| << 返回按钮 | 图片 | 前进按钮 >> |

每行都有一个唯一的 ID 号,使用该 ID 从我的数据库中获取结果。

<< 后退按钮是一个超链接,它应该包含前一行 ID。前进按钮 >> 应包含下一行 ID。

ID列具有带有 AUTO_INCREMENT 的 INTEGER 值。

我应该如何写我的查询?我可以使用负值吗?就像是:

SELECT * FROM `db` ORDER BY `ID` DESC LIMIT -1, 1

它有效吗?

4

2 回答 2

1

您不能使用负值,但您可以idWHERE子句中使用您的 current 来查找小于它的值,order byID DESC并限制为auto_increment3。id 列按降序排序,因此前 3 个值小于您的当前选择的 id 将被定位。

SELECT * 
FROM `db`
WHERE `ID` < [your_current_id]
ORDER BY `ID` DESC
LIMIT 3

同样要获得接下来的三个,请>按升序使用和排序。

SELECT * 
FROM `db`
WHERE `ID` > [your_current_id]
ORDER BY `ID` ASC
LIMIT 3
于 2012-07-14T15:15:34.647 回答
1

不,你不能那样做。

如果您纯粹是通过 ID 进行分页,那么类似

next 10 records:
    select ... where id > $current_id order by id ASC limit 10
previous 10 records:
    select ... where id < $current_id order by id DESC limit 10

would do, but then you're stuck with only allowing to browse by IDs in order. A proper pagination function disassociates the field you're sorting by from the navigation thing. You store PAGE* NUMBERS into the previous/next link, then use the total number of records in the pagination set to figure out row offsets for use in the LIMIT, e.g.

于 2012-07-14T15:16:59.297 回答