使用 ORDER BY 后 PostgreSQL 的逆向结果

Reverse results of PostgreSQL after using ORDER BY

我有一个查询,我需要 select 我的数据库中的最新 25 个条目,但颠倒 select 结果的顺序。

我想出了:

SELECT indexID, datetime, temperature FROM dataB WHERE userID="4236" ORDER BY indexID DESC, datetime ASC LIMIT 25

但我仍然按时间顺序从最新开始获取结果,但我希望在这 25 个最新的结果中按时间顺序从最旧到最新。我正在使用 PHP 的 pg_fetch_row() 并创建一个包含结果的连接字符串并将其输入到 Morris.js 图中,我的由于此查询,数据正在向后绘制。

如何反转查询结果?

与其将结果直接放入字符串中,不如将它们加载到数组中。当数组已满时,使用array_reverse函数将数组中元素的顺序倒转。您现在可以构建您的字符串并将数据传递给您的 Morris 图。

文档:http://php.net/manual/ro/function.array-reverse.php

您应该试试这个,首先按降序获取数据,然后用作临时 table,然后再次 select 按升序

SELECT indexID, datetime, temperature FROM (SELECT indexID, datetime, temperature FROM dataB WHERE userID="4236" ORDER BY indexID DESC LIMIT 25) temp order by indexID ASC

尝试为您的查询添加偏移量和限制。下面的示例显示了一个偏移量,它基本上获取与您的查询匹配的总行数并从中减去 25 以偏移您从与您的查询匹配的“倒数第 25 个”记录开始:

SELECT indexID, datetime, temperature
FROM dataB WHERE userID="4236"
ORDER BY indexID DESC, datetime ASC
LIMIT (( SELECT COUNT(indexID) FROM dataB WHERE userID="4236" )-25), 25;