Выбрать последние N записей отсортированные ASC

medvaldo

Люди, недавно обращался насчет выборки последних N записейй из таблицы... Возникла трабла - необходимо чтобы записи эти были отсортированы как ASC...Например, есть таблица A с полем id b записями скажем 1, 2, 3, 4, 5, ... 20 (значения поля id).Нужно выбрать последние скажем 5 записей, но чтобы они были отсортированы так:16,17,18,19,20Есть какие-нить мысли на этот счет? :)
7 ответов

medvaldo

SELECT Q.* FROM (
 SELECT * FROM my_table ORDER BY id DESC LIMIT <b>5</b>
) Q
ORDER BY Q.id ASC


medvaldo

Сработало :) спасибки :) как-то я не допетрил из темповой таблицы считать :(


medvaldo

как-то я не допетрил из темповой таблицы считать А где ты видишь временную таблицу? В общем случае это называется "подзапрос", а уточненно - inline view (не помню, как в MySQL, но в Oracle именно так)


medvaldo

не помню, как в MySQL
derived table


medvaldo

Инетесно, я почему-то всегда считал такие штуки - темповыми таблицами... хм... а что в таком случае темповая таблица?


medvaldo

create temporary table ...
Kстати, ИМХО Мускульникам давно было бы пора прилепить адекватную обработку лимитов отрицательных именно как "с конца", а не как "ошибка в тексте запроса" :) То есть чтобы подобную выборку можно было получить через:
order by ID ASC limit -<b>5</b>


medvaldo

Kстати, ИМХО Мускульникам давно было бы пора прилепить адекватную обработку лимитов отрицательных именно как "с конца", а не как "ошибка в тексте запроса" :) То есть чтобы подобную выборку можно было получить через:
order by ID ASC limit -<b>5</b>
Я бы на их месте такой провокации делать не стал. В отличие от положительных LIMIT-ов, отрицательные потрубуют значительно больших ресурсов.