выборка последних 5 записей

klax

Новичок
выборка последних 5 записей

Есть таблица вида:
id str del
1 blabla1 0
2 blabla2 0
3 blabla3 0
4 blabla4 0
5 blabla5 0
6 blabla6 0
7 blabla7 1
8 blabla8 1
9 blabla9 0
10 blabla10 0

Нужно из нее выбрать последние 5 записей, где del=0 и отсортировать их по возрастанию.
Т.е. результат должен быть таким:

blabla4
blabla5
blabla6
blabla9
blabla10
Пробовал сделать так: SELECT * FROM table WHERE del=0 ORDER BY id ASC LIMIT 5;

Но мне выдает первые 5 записей... :((
А если DESC, то последние, но это по убыванию сортирует.

Пробовал с вложенными запросами: SELECT * FROM table WHERE id IN (SELECT id FROM table WHERE del=0 ORDER BY id DESC LIMIT 5) ORDER BY id ASC;
но в этом случае вообще не хочет работать. :((
Помогите, плиз.

Заранее спасибо.
P.S.: Сборка Денвер 2 (апач, пхп5, mysql5)
 

Gas

может по одной?
select * from (select * from tbl order by id desc limit 5) as t order by str;
 

klax

Новичок
И еще вопрос: есть ли в MySQL функция для обратной сортировки ответа от уже выполненного запроса?
Т.е. выполнить SELECT * FROM table WHERE del=0 ORDER BY id ASC LIMIT 5;
а потом то, что выдало отсортировать DESC?
 

klax

Новичок
Спасибо... :))
Тогда у меня еще один вопрос:
Какой из следующих вариантов будет работать быстрее, если в таблице более миллиона записей?

1. SELECT * FROM table WHERE id>500000 AND id < 500010;

или

2. SELECT * FROM table ORDER BY id ASC LIMIT 500000,10;

-~{}~ 20.08.08 11:58:

2 Gas:
Т.е. это получается, что то, что в скобках заносится в "массив" t, а потом из него берется всё и сортируется?
Я правильно понял?
 

Gas

может по одной?
Какой из следующих вариантов будет работать быстрее
конечно первый (размеется нужен индекс по id), в первом случае mysql "сразу" может извлёчь нужные 10 строк, во втором случае вынужден прочитать из индекса 500010 записей и вернуть только 10.
Можешь почитать про explain, да и весь Optimizing SELECT and Other Statements

Я правильно понял?
да, только не в "массив", а во временную (temporary) таблицу.
 

Фанат

oncle terrible
Команда форума
первый вариант вообще не будет работать.
второй вариант будет работать очень медленно.
отсортировать 5 строчек в пхп - задача настолько мизерная, что задаваться любыми другими способами - идиотизм.
 

klax

Новичок
А вот у меня тогда еще один вопрос...
Мне надо выбрать 10 строк из середины миллиона...
Но я не знаю id этих строк...
Тогда наверное будет не обойтись без LIMIT?

-~{}~ 20.08.08 14:25:

*****
А почему первый не будет работать? Объясни, плиз...
 

zerkms

TDD infected
Команда форума
Сверху