Вы ищете повторяемую случайную сортировку. Для этого вы можете использовать RAND()
с семенем. Идея заключается в том, что каждому поиску должен быть присвоен постоянный начальный уровень (например, который вы можете сохранить в сеансе пользователя).
Предполагая, что у пользователя есть начальное значение 12345
, вы можете извлечь его первую страницу, например:
select * from mytable where category_id = ? order by rand(12345) limit 12
Затем вторая страница извлекается следующим образом:
select * from mytable where category_id = ? order by rand(12345) limit 12, 12
Третья страница:
select * from mytable where category_id = ? order by rand(12345) limit 24, 12
И т. Д.