Обратные результаты PostgreSQL после использования ORDER BY

У меня есть запрос, в котором мне нужно выбрать последние 25 записей в моей базе данных, но в обратном порядке результатов этого выбора.

Я придумал:

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

Но я все еще получаю результаты в хронологическом порядке, начиная с самых новых, но я хочу, чтобы хронологические самые старые были самыми новыми в этих 25 самых новых. Я использую PHP pg_fetch_row () и создание объединенной строки с результатами и подача ее в график Morris.js, где мои данные отображаются в обратном порядке из-за этого запроса.

Как мне отменить результаты запроса?

0

Решение

Вы должны попробовать это, сначала получить данные в порядке убывания, а затем использовать их как временную таблицу и снова выбрать в порядке возрастания.

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

Другие решения

Вместо того, чтобы помещать результаты непосредственно в строку, загрузите их в массив. Когда массив заполнен, используйте array_reverse Функция, чтобы изменить порядок элементов в массиве. Теперь вы можете построить свою строку и передать данные на график Морриса.

Документация: http://php.net/manual/ro/function.array-reverse.php

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;
0
По вопросам рекламы [email protected]