Например, у меня есть таблица A:

id      name
----------------
1       one
2       two
3       three
4       four

И нужно произвести
select * from A order by name (Именно такой!)
Как узнать(средствами SQL) какой по счёту будет запись с id = 1?
Вообще, возможно ли это?

База MySQL

Комментарии (18)

epic_fail 22. января, 2009.г.  
 0 0
Не тот случай, женщина.

Ну, я, может, талантливый лингвист (:
s_ 22. января, 2009.г.  
 0 0
Не тот случай, женщина.
epic_fail 22. января, 2009.г.  
 0 0
Манго, что за филологический факультет обучил тебя языку структурированных запросов? =)

Филолог, он и в...
(:
s_ 22. января, 2009.г.  
 0 0
Манго, что за филологический факультет обучил тебя языку структурированных запросов? =)
epic_fail 22. января, 2009.г.  
 0 0
Я именно так и сделал(ну на подобии этого).
Только должно быть "<=" вместо "<"

Ну, извините, я - филолог, а не программист (:
s_ 22. января, 2009.г.  
 0 0
Автор, структура таблицы и данные твои.. без дополнений. 1 в 1.
s_ 22. января, 2009.г.  
 0 0
Интересно.. последнее слово было "плавиться"..  
s_ 22. января, 2009.г.  
 0 0
select max(rownum) i from (select name from a order by name) b
where exists (select 1 from a where id = 1 and b.name <= name)


   Щас еще подумаю, как можно заставить свой мозг плав%
contact_us (39) 22. января, 2009.г.  
 0 0
Дедовские у вас методы.. =))

Можешь предложить что-нибудь более современное?
Возможно, в ORACLE что-нить и есть, но в MySQL я ничё похожего не нашёл.
s_ 22. января, 2009.г.  
 0 0
Т.е. сколько было записей до твоей (и +1 за счёт "=") ?
Дедовские у вас методы.. =))

И потом.. не могу точно сказать о "мускуле" (с ораклёй работаю), но даже твой селектик следует видоизменить.

select count(*) from a where name <= (select name from a where id = 1)


Не уверен на 100%, что в mySQL сие отработает, но вроде корректно.
contact_us (39) 22. января, 2009.г.  
 0 0
SELECT `name` FROM `A` WHERE `id`=1
SELECT COUNT(*) FROM `A` WHERE `name`<'name_из_предыдущего_запроса '

Я именно так и сделал(ну на подобии этого).
Только должно быть "<=" вместо "<"
s_ 22. января, 2009.г.  
 0 0
Автор, даже интересно, что же такого ты придумал сам? =)
Сашка Промокашка (39) 22. января, 2009.г.  
 0 0
По моему, так мы лишь получим позицию в несортированной таблице. А тут нужно отсортировать запросом и получить позицию из результата. Временная таблица для запроса помоему самый удобный вариант средствами mySWL.
epic_fail 22. января, 2009.г.  
 0 0
Ну хоть какие-нибудь идеи...

SELECT `name` FROM `A` WHERE `id`=1
SELECT COUNT(*) FROM `A` WHERE `name`<'name_из_предыдущего_запроса '
Сашка Промокашка (39) 22. января, 2009.г.  
 0 0
Можно временную таблице создать и туда квери запихнуть (если ты не это придумал)  
contact_us (39) 22. января, 2009.г.  
 0 0
Ладно, всем спасибо
Я уже сам придумал как это сделать.
contact_us (39) 22. января, 2009.г.  
 0 0
Ну хоть какие-нибудь идеи...
Похожие записи