2012-04-14 39 views
0

可以说我在我的数据库中有5000行。我想通过结果分页,但我只想通过最后的1000行进行分页,而不是全部5000页。我该怎么做?我会有这样一个查询:MySQL - 如何通过特定数量的行进行分页?

SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 0,25 

但这个查询会抓住所有5000个结果。我只想抓住最新的1000个结果,并通过它分页。我将如何做到这一点?我确实有一个id字段,它是一个主键,自动增量。不知道这是否会有所帮助。

回答

1

如果你想使用SQL您需要连续调用这些查询分页:

SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 1000,25 
SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 1025,25 
SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 1050,25 
... 
... 

换句话说

SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT <offset>,<pageSize> 
0

尝试这样:

SELECT * FROM table WHERE id > ((SELECT MAX(id) FROM table) - 1000); 

或者这一个:

SELECT * FROM (SELECT * FROM table ORDER BY id DESC LIMIT 1000) AS ttbl ORDER BY 
                       id ASC; 
+1

第二个更好,因为如果ID中有间隙,第一个不保证返回1000行。 – 2012-04-14 16:53:43

相关问题