У меня есть следующий запрос в postgres:
SELECT *
FROM "bookings"
WHERE ("bookings".client_id = 50)
ORDER BY session_time DESC
LIMIT 20 OFFSET 0
Запись на 20-м месте имеет такое же время сеанса _, что и 21-я запись.
Этот запрос возвращает 20 результатов, однако, если вы сравниваете результаты со всей базой данных, запрос возвращает 1-й -19-й результат и 21-й, пропуская 20-й.
Этот запрос можно исправить, добавив «id» в заказ:
SELECT *
FROM "bookings"
WHERE ("bookings".client_id = 50)
ORDER BY session_time DESC, id
LIMIT 20 OFFSET 0
Однако мне было интересно, как эта ошибка возникла? Как postgres упорядочивает идентичные поля при использовании смещений и ограничений? Это случайно? Это ошибка с postgres?