postgresに次のクエリがあります:
SELECT *
FROM "bookings"
WHERE ("bookings".client_id = 50)
ORDER BY session_time DESC
LIMIT 20 OFFSET 0
20位のレコードは、21位のレコードと同じsession_timeを持っています。
このクエリは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のバグですか?