Mysql и номер по порядку

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Ответить
UUU
Сообщения: 310
Зарегистрирован: 17 фев 2004, 09:27
Откуда: Иваново
Контактная информация:

есть запрос:

select
otd,count(id) as cnt
from table1
group by otd
order by cnt desc

Надо узнать, на каком месте находится, например otd='123'
UUU
Сообщения: 310
Зарегистрирован: 17 фев 2004, 09:27
Откуда: Иваново
Контактная информация:

неужели задача не решаема простым способом?
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Простым - точно нерешаема.
Вообще задача скажем так не совсем SQL-ная.
Я бы делал выборку во временную таблицу с автоинкрементным полем.
Даже самый дурацкий замысел можно воплотить мастерски
UUU
Сообщения: 310
Зарегистрирован: 17 фев 2004, 09:27
Откуда: Иваново
Контактная информация:

Как вариант, но, например, если записей далеко за десятки тысяч. Плодить временные таблицы :-( Можно, имхо, вложенными селектами, но 3 версия мускуля их не держит...
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Ну, курсор в общем случае ещё тяжелее, да и нету их опять же минимум в ранних версиях mySQL.
А вообще задача вот почему не SQL-ная. Чтобы отобразить резалтсет ты всё-равно его в клиентском приложении выфетчить должен. Соответственно, счётчик на клиенте реализуется проще всего. Кроме того, на сколько я помню, mySQL имеет встроенное средство, выдающее порядковый номер строки резалтсета, причём с возможностью выборки по этому порядковому номеру.
Даже самый дурацкий замысел можно воплотить мастерски
UUU
Сообщения: 310
Зарегистрирован: 17 фев 2004, 09:27
Откуда: Иваново
Контактная информация:

Да, так и придется
set @a=0;
create table select @a=@a+1...
select
drop...

Сделал бы временную таблу, но почему-то не могу из перла (use MySQL) сделать множественный запрос :-)
Ответить