2017-02-11 9 views
0

Я начинаю в MySQL и уже несколько часов искал решение этой проблемы. Я нашел несколько ответов, но не могу их реализовать.Эмулировать поиск и получить номер строки возвращаемой строки (из итоговой)

В принципе, Вот что я хочу сделать:

Я хочу, чтобы найти, как пользователь из из данной страны будет ранга по сравнению с другими пользователями из одной и той же страны, когда они ранжируются по ID

Для пример:
Джо ID 10 и из США
есть 100 пользователей из США
Результат: Джо занимает десятые

Как бы преобразовать это запрос MySQL?

Заранее спасибо.

+0

показать таблицу с некоторыми данными – denny

+0

ID и его ранг? – affaz

+0

В моей таблице у меня есть только 2 столбца - ** id ** и ** страна ** –

ответ

1

Создать 2 пользовательские переменные, например, running & previous который получает номер предыдущего ранга и, соответственно, вычислить ранг номер country приращением текущее значение на 1.

select u.id,u.country,u.rank 
from (
    select u1.id,u1.country, 
     @running:=if(@previous=concat(u1.id,u1.country),@running,0) + 1 as rank, 
     @previous:=concat(u1.id,u1.country) 
    from tablename u1 
    order by concat(t.id,t.country) 
) u; 

Заменить tablename с таблицей