Я потратил немало времени на то, чтобы пробовать разные вещи, но никто из них, похоже, не работает. Вот моя ситуация, я хотел бы иметь возможность выбрать ранг ряда на основе его идентификационного из специально отсортированных строкиИспользование MySQL, как выбрать ранг результата запроса для одной конкретной строки?
Например, если мой запрос что-то вроде:
SELECT id, name FROM people ORDER BY name ASC
с результатами как:
id name 3 Andrew 1 Bob 5 Joe 4 John 2 Steve
Я хотел бы получить ранг (то, что ряд его заканчивается в результатах) без возвращения всех строк и перекручивания выбросить их, пока я не дойду до того, что я хочу (в PHP).
Например, я хотел бы выбрать «ранг» «Стива», чтобы он возвращался - в этом случае - 5 (не его идентификатор, а «ранг» его имени в приведенном выше запросе).
Аналогичным образом, я хотел бы иметь возможность выбрать ранг любой строки с идентификатором 1. Для этого примера я хотел бы вернуть «ранг» из 2 (потому что это в какой строке результата там это идентификатор 1) и ничего больше.
У меня есть Google, насколько я мог с различными результатами ... либо иметь очень медленные запросы для больших таблиц, либо создавать всевозможные временные таблицы и пользовательские переменные (первый раз я бы ДЕЙСТВИТЕЛЬНО хотел избегай, последний, я полагаю, могу жить).
Любая помощь или понимание были бы оценены.
После нескольких небольших изменений это, похоже, работает довольно хорошо для того, что мне нужно.Однако одно дополнительное усложнение: можно было бы выбрать набор строк с учетом набора условий (например, только люди, у которых есть имя «J» в их имени, - WHERE name LIKE «% j%». Я пробовал это , и хотя поле результата «rank» по-прежнему актуально, оно пропускает числа для тех, у кого нет имени J. – theotherlight