Intereting Posts
Ошибка FPDF: некоторые данные уже выведены, невозможно отправить PDF Поиск лучшего способа хранения таблицы с использованием PHP и MySQL Не удается подключиться к базе данных с 000webhost Почему md5 ('240610708') равен md5 ('QNKCDZO')? Добавить изображение в Facebook с помощью Graph API (позволяет ограниченные фотографии) и добавить еще некоторые функции Как искать слэш (\) в MySQL? и почему escaping (\) не требуется для where (=), но для Like требуется? SMTP-адрес электронной почты не отправляется на iPhone cordova WebApp, работая в браузере? Code Igniter – использование моего собственного API и авторизации получение видео из базы данных с использованием php Библиотеки и псевдокод для физической панели мониторинга / состояния Для этого адаптера требуется расширение PDO, но расширение не загружено Генерирование разрыва строки в FPDF Обновить PHP SESSION var после запроса AJAX Максимальный размер объекта JSON? Как я могу получить список MIB с удаленного сервера с помощью PHP?

Использование MySQL, как мне выбрать ранг результата запроса для одной конкретной строки?

Я потратил довольно много времени на то, чтобы пробовать разные вещи, но никто из них, похоже, не работает. Вот моя ситуация, я хотел бы иметь возможность выбрать ранг строки на основе его идентификатора из специально отсортированной строки

Например, если мой запрос выглядит примерно так:

SELECT id, name FROM people ORDER BY name ASC 

с результатами, такими как:

 id name
 3 Андрей
 1 Боб
 5 Джо
 4 Иоанн
 2 Стив

Я хотел бы получить ранг (какая строка в результатах), не возвращая все строки и не зацикливая их, пока я не получу тот, который я хочу (в PHP).

Например, я хотел бы выбрать «ранг» «Стива», чтобы он возвращался – в этом случае – 5 (не его идентификатор, а «ранг» его имени в вышеупомянутом запросе).

Аналогично, я хотел бы иметь возможность выбрать ранг любой строки с идентификатором 1. Для этого примера я хотел бы вернуть «ранг» из 2 (потому что это в какой строке результата есть идентификатор 1) и ничего больше.

У меня есть Google, насколько я мог бы с разными результатами … либо иметь очень медленные запросы для больших таблиц, либо создавать всевозможные временные таблицы и пользовательские переменные (первый из которых я ДЕЙСТВИТЕЛЬНО хотел бы избежать, последний Полагаю, я могу жить).

Любая помощь или понимание будут оценены.

Related of "Использование MySQL, как мне выбрать ранг результата запроса для одной конкретной строки?"

от artfulsoftware :

 SELECT p1.id, p1.name, COUNT( p2.name ) AS Rank FROM people p1 JOIN people p2 ON p1.name < p2.name OR ( p1.name = p2.name AND p1.id = p2.id ) GROUP BY p1.id, p1.name ORDER BY p1.name DESC , p1.id DESC LIMIT 4,1 

Что-то вроде этого?

 SELECT Row, id, name FROM (SELECT @row := @row + 1 AS Row, id, name FROM people ORDER BY name ASC) WHERE Row = @SomeRowNumber 

Если вы хотите пойти по ID, просто измените предложение where.

Попробуй это:

 SELECT @rownum:=@rownum+1 `rank`, p.id, p.name FROM people p, (SELECT @rownum:=0) r ORDER BY name ASC 

Я пытаюсь этот код … может помочь другим, я получаю результат от пользователей и загружаю таблицу для профиля пользователя и присоединяюсь к нему, чем после того, как я вычисляю пользовательские точки и сортирую их. Наконец, я проверяю и добавляю номер строки для ранжирования для пользователей … В радости. благодаря

 set @row_num = 0; set @calp =0; select if(@calp=(@calp:=user.cal_points), @row_num, @row_num := @row_num + 1) as row_number,user.* from (select user_skills.*,users.username,upload.file_name from user_skills join users on user_skills.user_id=users.id join upload on upload.upload_id=users.profile_pic order by user_skills.cal_points desc) as user WHERE user.skill_name LIKE '%ph%'