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 последних из предыдущего запроса.
Если сделать так:
'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'
есть вероятность что в базе лежат данные с идентичной датой и тогда часть данных наоборот не будет получена.
Как поступить ?