Я столкнулся с вопросом, что пока не могу найти решение для нумерации клавиш набора:
Предположим, у нас есть этот запрос:
SELECT a.id, a.number, AVG(b.rating) AS rating
FROM a LEFT JOIN b ON xxxxxxx
GROUP BY a.id
ORDER BY rating DESC, a.number DESC
LIMIT xxxx
Как мы должны сделать пагинацию набора ключей для этого ?
Только для a.number у нас может быть WHERE a.number < ?;
Для рейтинга, мы делаем HAVING rating < ?;
Если есть два условия для где, мы можем иметь WHERE (x, y) < (?, ?)
.
Но как это сделать HAVING и WHERE?
Редактировать: я реализовал это сегодня и обнаружил, что это медленнее, чем нумерация смещений OFFSET, поэтому не рекомендуется.