我有这个postgresql代码。
SELECT *
FROM listings
WHERE status != 'inactive'
ORDER BY pkey DESC LIMIT 1000 OFFSET 0
准确地说,这将查询仍然有效的FIRST 1000列表,然后将其排序为DESC。 有最好的方法来查询最新/最新数据吗? 比如我有500000行,现在当我执行查询时,我想要查询499000-500000 DESC。
感谢您的帮助。
答案 0 :(得分:2)
只是说一句话,你说
这将查询仍然有效的FIRST 1000列表,然后将其排序为DESC
哪个不准确。它将对排序ID DESC 进行排序,然后选择“第一”1000(当排序DESC时可以将其视为“最后”1000)。
所以,我认为你的问题的答案是 你的问题。您显示的查询将选择“最后”(即列'pkey`中具有最大值的记录)1000条记录,从最新到一个< em>一千年前。
请注意,唯一真正的警告是,它不完全是499000-500000,只有当所有1,000个最近的行都“有效”时才会出现这种情况。
答案 1 :(得分:0)
Y下降排序的最后X个记录与Y上升的第一个X记录顺序相同,不是吗?一旦获得结果,您就必须再次翻转订单。
简单示例:
Data: C, E, B, A, D
Descending: E, D, C, B, A
Descending (last 3): C, B, A
Ascending: A, B, C, D, E
Ascending (first 3): A, B, C
Ascending (first 3, reverse sorted): C, B, A