[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос составить
Michael
Столкнулся недавно с одной выборкой. Решил в два шага, а хочется
узнать как в один.
Имеем поле id AUTO_INCREMENT UNSIGNED PRIMARY KEY
1
3
10
...
99
100
102
105
110
117

...
998
1000

Задача:
Выбрать 5 полей id которые следуют за 99 в порядке убывания.
Т.е. нужно получить:
117
110
105
102
100



Спустя 1 час, 57 минут, 1 секунда (23.10.2009 - 18:06) glock18 написал(а):
1.
SQL
select *
from (select *
from users u
where id_user > 18
order by id_user asc limit 5 ) u
order by u.id_user desc;


explain с filesort получается.

2.
SQL
select *
from users u
where id_user < 1 + (select id_user
from users u
where id_user > 18
order by id_user asc LIMIT 4, 1)
order by u.id_user desc limit 5;


explain гораздо лучше.

Спустя 13 минут, 4 секунды (23.10.2009 - 18:19) Sylex написал(а):
блин, надо свою задачку выложить rolleyes.gif

Спустя 2 минуты, 1 секунда (23.10.2009 - 18:21) Michael написал(а):
Ну нормально - о первом я примерно знал, думал как в один select может можно.
Завтра уже поввожу. (и во втором варианте поразбираюсь smile.gif )

Спустя 27 минут, 52 секунды (23.10.2009 - 18:49) glock18 написал(а):
Цитата
блин, надо свою задачку выложить

выкладывай smile.gif я обожаю запросы писать rolleyes.gif


_____________
There never was a struggle in the soul of a good man that was not hard
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.