Есть новостная лента, как получать следующую порцию новостей (10шт) начиная с последней? Дело в том что выдача формируется не по хронологическому порядку, т.е. я должен получать id последней выведенной новости на странице и плясать от неё
И что делать в случае если новость была удалена (мы передали id, который уже не существует)?
Для решения задачи, к заданной сортировке добавьте сортировку по id. В повторный запрос надо передавать значения полей id и поля сортировки из последней строки первоначального запроса. Запрос будет выглядеть так:
SELECT
nl.Id,
nl.'поле сортировки',
....
FROM 'новостная лента' AS nl
WHERE
(nl.'поле сортировки' > 'значение поля сортировки из последней строки предыдущего набора')
OR (
nl.'поле сортировки' = 'значение поля сортировки из последней строки предыдущего набора'
AND nl.Id < 'значение id из последней строки предыдущего набора'
)
ORDER BY nl.'поле сортировки' ASC, nl.id DESC
LIMIT 10;
Пример работы на rextester
Сборка персонального компьютера от Artline: умный выбор для современных пользователей