Странная ошибка заказа (это ошибка? )в postgres при заказе двух столбцов с одинаковыми значениями

У меня есть следующий запрос в 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?

8
задан Clockwork-Muse 10 August 2012 в 15:50
поделиться