|
|
|
| Здравствуйте. Есть SQL запрос который возвращает список пользователей упорядоченный по какой-то колонке, необходимо узнать позицию строки у которой в определенном столбике определеноое значение . Как это можно сделать без PHP? | |
|
|
|
|
|
|
|
для: pavluxa09
(02.06.2012 в 18:07)
| | совсем совсем непонятно что вы хотите | |
|
|
|
|
|
|
|
для: pavluxa09
(02.06.2012 в 18:07)
| | А вы уверены, что оно вам нужно?
Дело в том, что в MySQL нет встроенной функции нумерования строк.
Есть способ, но он чрезвычайно медленный!!!
В нем для этого происходит умножение таблицы самой на себя, затем выборка среза по условию, группировка и подсчет строк....
Т.е. если в таблице 1000 пользователей, то будут производиться манипуляции с таблицей размером 1000*1000 = 1 000 000 строк.
Для примера, я сейчас запустил такую выборку на таблице с 2500 пользователей - время выполнения запроса 122 секунды. | |
|
|
|
|
|
|
|
для: pavluxa09
(02.06.2012 в 18:07)
| | Мдааа.... Перетрудился =)
Не нужно тут нумерование строк, слава богу =)
SELECT count(*)num
FROM users
WHERE login <=( SELECT login
FROM users
WHERE mail='user@mail.ru' )
| Возвращает (num) номер строки в таблице users отсортированной по полю login где mail пользователя равен user@mail.ru
Вот если бы вам понадобилось найти позиции ВСЕХ строк пользователей у которых город = 'Москва', то пришлось бы нумеровать. | |
|
|
|
|
|
|
|
для: Sfinks
(03.06.2012 в 00:44)
| | Супер! Спасибо! | |
|
|
|