我在 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的错误吗?