使用 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 图。
您应该试试这个,首先按降序获取数据,然后用作临时 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;
我有一个查询,我需要 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 图。
您应该试试这个,首先按降序获取数据,然后用作临时 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;