2012-04-14 3 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

Второй вариант лучше, поскольку первый не гарантирует возврата 1000 строк, если в идентификаторах есть пробелы. –

Смежные вопросы