Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Пагинация по курсору и сортировка / 3 сообщений из 3, страница 1 из 1
23.10.2018, 15:15
    #39721495
Пагинация по курсору и сортировка
Здравствуйте, помогите разобраться или направьте в нужную сторону.
Задача: реализовать пагинация по курсору.

SELCT * FROM foo WHERE id > n ORDER BY id limit 10
И в последующие запросы мы ставим последний id.

Продолжим, задача: добавить сортировку например по дате.
И вот на этом месте я торможу.

SELCT * FROM foo WHERE id > n ORDER BY date DESC, id limit 10

Как быть теперь, все id перемешались.
...
Рейтинг: 0 / 0
23.10.2018, 19:12
    #39721651
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пагинация по курсору и сортировка
Так и должно быть - изменение сортировки разваливает пагинацию.
Можно, конечно, фиксировать параметры текущей записи, и при смене сортировки автоматом скроллиться до этой записи в новой сортировке...
...
Рейтинг: 0 / 0
23.10.2018, 23:44
    #39721751
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пагинация по курсору и сортировка
Если поле date удастся сделать уникальным, то принципиально ничего не меняется:
Код: sql
1.
SELECT * FROM foo WHERE date > prev_date ORDER BY date limit 10



Если не удастся, то посложнее:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT * FROM
(
  SELECT * FROM foo WHERE date = prev_date AND id > n ORDER BY id limit 10
  UNION ALL
  SELECT * FROM foo WHERE date > prev_date ORDER BY date, id limit 10
) t
ORDER BY date, id limit 10


Если таскать предыдущую дату сложно, то можно подставить вместо нее выборку из таблицы по предыдущему идентификатору n.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Пагинация по курсору и сортировка / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]