mysql - 如何用LIMIT选择3个值(负值)?

时间:2012-07-14 15:11:50

标签: mysql pagination

我的页面如下:

| <<后退按钮|图片|转发按钮>> |

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

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

ID列的INTEGER值为AUTO_INCREMENT。

我应该如何编写查询?我可以使用负值吗?类似的东西:

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

有效吗?

2 个答案:

答案 0 :(得分:1)

您不能使用负值,但您可以使用id子句中的当前WHERE来查找小于它的值,按ID DESC排序并限制为3。 auto_increment id列按降序排序,因此将会定位小于当前所选ID的前3个值。

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

答案 1 :(得分:1)

没有。你不能这样做。

如果你纯粹是通过身份证进行分页,那么就像

那样
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

会这样做,但是你只能按顺序浏览ID。正确的分页功能会将您正在排序的字段与导航内容解除关联。将 PAGE * NUMBERS 存储到上一个/下一个链接中,然后使用分页集中的记录总数来计算LIMIT中使用的行偏移量,例如