Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Постраничная выборка. Как правильно составить запрос?

Иван Кинчин Знаток (313), на голосовании 5 лет назад
Нужно сделать постраничную выборку из mysql по столбцу в котором хранится дата в формате timestamp.
Если сделать так:
'SELECT * FROM files ORDER BY date DESC LIMIT 0, 20'
'SELECT * FROM files ORDER BY date DESC LIMIT 20, 20' и т. д.
то следующая выборка после обновления базы выведет уже полученные ранее данные.
А если так:
'SELECT * FROM files WHERE date < 1548068216 LIMIT 20'
есть вероятность что в базе лежат данные с идентичной датой и тогда часть данных наоборот не будет получена.

Как поступить ?
Голосование за лучший ответ
Bastila Shan Гуру (4382) 5 лет назад
SELECT * from files LIMIT 20 OFFSET 20 это получить например 20 записей, но начиная с 20 строки в базе или тоже самое SELECT * from files LIMIT 20, 20

Чтобы учесть дату и упорядочить можно так сделать
SELECT * from files ORDER BY date DESC LIMIT 20,20

Тогда неважно какие даты хранятся, он их сначала упорядочит по timestamp в порядке убывания, а потом выберет первые 20 со смещением 20
Иван КинчинЗнаток (313) 5 лет назад
Если я делаю первый запрос и получаю с 1 по 20 и через Nое время в базу добавляется допустим 3 записи, тогда от второго запроса я получу еще 20 включая 3 последних из предыдущего запроса.
Похожие вопросы