我有这个 postgresql 代码。
SELECT *
FROM listings
WHERE status != 'inactive'
ORDER BY pkey DESC LIMIT 1000 OFFSET 0
准确地说,这将查询仍然处于活动状态的 FIRST 1000 个列表,然后对其进行 DESC 排序。是否有查询最新/最新数据的最佳方法?例如,我有 500000 行,现在当我执行查询时,我希望查询 499000-500000 的 DESC。
谢谢您的帮助。
我有这个 postgresql 代码。
SELECT *
FROM listings
WHERE status != 'inactive'
ORDER BY pkey DESC LIMIT 1000 OFFSET 0
准确地说,这将查询仍然处于活动状态的 FIRST 1000 个列表,然后对其进行 DESC 排序。是否有查询最新/最新数据的最佳方法?例如,我有 500000 行,现在当我执行查询时,我希望查询 499000-500000 的 DESC。
谢谢您的帮助。
言简意赅,你说
这将查询仍处于活动状态的 FIRST 1000 个列表,然后对其进行排序 DESC
这是不准确的。它将排序排序 id DESC ,然后选择“第一个”1000(当排序 DESC 时,可以将其视为“最后一个”1000)。
所以,我认为你的问题的答案就在你的问题中。您显示的查询将选择“最后一个”(即“pkey”列中具有最大值的记录)1000 条记录,从最近到一千前的顺序排列。
请注意,唯一真正需要注意的是,它不完全是 499000-500000,只有当所有 1,000 个最近的行都“活动”时才会如此。
按 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