使用ORDER BY后反转PostgreSQL的结果

时间:2017-09-08 18:20:53

标签: php postgresql-9.1 morris.js

我有一个查询,我需要在数据库中选择最新的25个条目,但是反转选择结果的顺序。

我想出了:

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

但我仍然按照从最新开始的时间顺序得到结果,但我希望按时间顺序排列最新的最新版本。我正在使用PHP的 pg_fetch_row()并创建一个带有结果的连接字符串,并将其输入到Morris.js图中,由于此查询,我的数据被向后绘制。

如何撤消查询结果?

3 个答案:

答案 0 :(得分:1)

您应该尝试这样做,首先在用作临时表后按降序获取数据,然后再按升序选择

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

答案 1 :(得分:0)

不是将结果直接放入字符串中,而是将它们加载到数组中。当数组已满时,使用Car newCar = Mapper.Map<Truck, Car>(truck); // This is how I want to use Automapper car.color == "blue"; // Should be true car.horsepower == 250; // Should be true 函数来反转数组中元素的顺序。您现在可以构建字符串并将数据传递给Morris图。

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

答案 2 :(得分:0)

尝试添加偏移量以及查询限制。下面的示例显示了一个偏移量,该偏移量基本上得到与您的查询匹配的总行数,并从中减去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;