Order by by limit and offset没有按照预期的顺序返回结果



我将尝试回答我自己的问题,因为我还没有在互联网上找到一个确切的解决方案。我有一个问题,我的SQL查询返回的结果,在某些情况下这里缺少一些结果。我将尝试简化SQL查询:

SELECT users.*, joined_table.sign_in_count as active_count 
FROM users ...
JOIN ... 
WHERE ... 
ORDER BY active_count DESC LIMIT 5 OFFSET 5

假设我查询所有的表,结果是:

[3,2,1,2,2,1,2,1,3,2,1,3,3,1,3] (so, five 1's , five 2's and five 3's)

当我应用ORDER BY active_count DESC LIMIT 5 OFFSET 5我希望结果是:

[2,2,2,2,2]

但是我得到的结果是:

[2,2,2,2,1] (it was missing fifth "2")

我认为问题是,由于某种原因,ORDER BY在应用LIMIT 5OFFSET 5之前没有正确排序记录,或者至少不是以我所期望的方式。可能是因为JOIN或类似的原因。

我的问题的解决方案是添加到ORDER_BYid的记录以及。尽管它稍微改变了元素的顺序,但在某种程度上它是一致的,并且没有更多意外丢失的元素。

所以,我使用的查询是:
SELECT users.*, joined_table.sign_in_count as active_count 
FROM users ...
JOIN ... 
WHERE ... 
ORDER BY active_count DESC, id DESC LIMIT 5 OFFSET 5

最新更新