1

我有这个 postgresql 代码。

SELECT * 
FROM listings 
WHERE status != 'inactive' 
ORDER BY pkey DESC LIMIT 1000 OFFSET 0

准确地说,这将查询仍然处于活动状态的 FIRST 1000 个列表,然后对其进行 DESC 排序。是否有查询最新/最新数据的最佳方法?例如,我有 500000 行,现在当我执行查询时,我希望查询 499000-500000 的 DESC。

谢谢您的帮助。

4

2 回答 2

2

言简意赅,你说

这将查询仍处于活动状态的 FIRST 1000 个列表,然后对其进行排序 DESC

这是不准确的。它将排序排序 id DESC ,然后选择“第一个”1000(当排序 DESC 时,可以将其视为“最后一个”1000)。

所以,我认为你的问题的答案就你的问题中。您显示的查询将选择“最后一个”(即“pkey”列中具有最大值的记录)1000 条记录,从最近一千的顺序排列。

请注意,唯一真正需要注意的是,它不完全是 499000-500000,只有当所有 1,000 个最近的行都“活动”时才会如此。

于 2012-08-26T17:01:14.223 回答
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
于 2012-08-26T16:58:02.130 回答