"Порядок по убыванию" в обратном порядке?
Добро пожаловать,
Мне интересно, возможно ли отменить возвращенные данные при сортировке "order by desc", но я хочу, чтобы эти данные были в обратном порядке.
Например, я получил таблицу со значениями
ID
1
2
3
4
И я делаю
Заказ по ID ASC LIMIT 3
Я получил
1
2
3
Когда я делаю заказ по ID DESC limit 3
я получаю
4
3
2
Я хотел бы иметь
3
2
1
Итак, я хотел бы заказать ASC, но отменил результаты.
Я всегда делал это на стороне PHP, используя array_reverse, но сегодня я хочу спросить вас.
Maybye, я ошибаюсь, и я могу сделать это только в Mysql.
Отношения
Ответы
Ответ 1
SELECT *
FROM (
SELECT ...
FROM ...
ORDER BY ID ASC
LIMIT 3
) AS sq
ORDER BY ID DESC
Подумайте об этом как о двух шагах. Сначала он выполняет внутренний запрос: выбирает 3 записи с наименьшими идентификаторами. Затем во внешнем запросе он сортирует их в порядке убывания.
Ответ 2
Вы можете получить первые три строки с помощью подзапроса и затем изменить порядок этих строк во внешнем запросе:
SELECT *
FROM
(
SELECT *
FROM yourtable
ORDER BY ID
LIMIT 3
) T1
ORDER BY ID DESC
Ответ 3
Нет, вы не ошибаетесь. Для любого разумного объема данных нет никакой разницы. Array_reverse все в порядке.
Это не то, о чем вы должны беспокоиться. Просто используйте то, что вам больше нравится - для удобочитаемости или других субъективных причин.
Ответ 4
Вы можете сделать это с помощью дополнительного запроса:
SELECT * FROM
(SELECT * FROM myTable ORDER BY idMyTable LIMIT 0, 3) AS r
ORDER BY r.idMyTable DESC
Ресурсы:
Ответ 5
Вы можете использовать внешний SELECT
для изменения порядка:
SELECT *
FROM (
SELECT …
ORDER BY id ASC
LIMIT 3
) sub
ORDER BY id DESC