postgresql – 按顺序获取数据库中的最后N行?

postgresql – 按顺序获取数据库中的最后N行?,第1张

概述假设我有以下数据库表: record_id | record_date | record_value-----------+-------------+-------------- 1 | 2010-05-01 | 195.00 2 | 2010-07-01 | 185.00 3 | 2010-09-01 | 假设我有以下数据库表:
record_ID | record_date | record_value-----------+-------------+--------------         1 | 2010-05-01  |       195.00         2 | 2010-07-01  |       185.00         3 | 2010-09-01  |       175.00         4 | 2010-05-01  |       189.00         5 | 2010-06-01  |       185.00         6 | 2010-07-01  |       180.00         7 | 2010-08-01  |       175.00         8 | 2010-09-01  |       170.00         9 | 2010-10-01  |       165.00

我想使用record_date ASC排序的数据来抓取最后5行。这很容易做到:

SELECT * FROM mytable ORDER BY record_date ASC liMIT 5 OFFSET 4

哪个会给我的

record_ID | record_date | record_value-----------+-------------+--------------         6 | 2010-07-01  |       180.00         7 | 2010-08-01  |       175.00         3 | 2010-09-01  |       175.00         8 | 2010-09-01  |       170.00         9 | 2010-10-01  |       165.00

但是当我不知道有多少条记录,无法计算4的魔术数量时,该怎么办?

我已经尝试过这个查询,但是如果存在少于5条记录,则会产生一个负的OFFSET,这是无效的:

SELECT * FROM mytable ORDER BY record_date ASC liMIT 5     OFFSET (SELECT COUNT(*) FROM mytable) - 5;

那我该怎么做呢?

你为什么不用相反的方式订购?
SELECT * FROM mytable ORDER BY record_date DESC liMIT 5;

如果您不想在应用程序中正确翻转,您可以嵌套查询并将其翻转两次:

SELECT *    FROM (SELECT * FROM mytable ORDER BY record_date DESC liMIT 5)    ORDER BY record_date ASC;

…结果是一个相当便宜的 *** 作。

总结

以上是内存溢出为你收集整理的postgresql – 按顺序获取数据库中的最后N行?全部内容,希望文章能够帮你解决postgresql – 按顺序获取数据库中的最后N行?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1171437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存