我将尝试回答我自己的问题,因为我还没有在互联网上找到一个确切的解决方案。我有一个问题,我的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 5
和OFFSET 5
之前没有正确排序记录,或者至少不是以我所期望的方式。可能是因为JOIN
或类似的原因。
我的问题的解决方案是添加到ORDER_BY
的id
的记录以及。尽管它稍微改变了元素的顺序,但在某种程度上它是一致的,并且没有更多意外丢失的元素。
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