Более быстрый рейтинг для наиболее распространенных имен в MYSQL - PullRequest
0 голосов
/ 26 февраля 2011

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

Вот запрос, который я пришел.

SELECT rank,fname
   FROM (SELECT @rownum:=@rownum+1 rank,fname 
      FROM (SELECT fname,count(*) 
      FROM userlist GROUP BY fname 
      ORDER BY count(*) DESC) AS R1 
   JOIN (SELECT @rownum:=0) AS I) AS R2  
WHERE fname = 'Username'

1 Ответ

1 голос
/ 26 февраля 2011

Чтобы получить ранжирование определенного имени, попробуйте следующим образом

select count(*) + 1 as rank from 
    (select count(*) as number from userlist group by fname having number > 
       (select count(*) as number from userlist where fname='Username') order by number desc) as tab; 

edit.Если вы хотите показать даже имя, добавьте переменную пользователя:

set @name = 'nick';
select @name as fname,count(*) + 1 as rank from 
    (select count(*) as number from userlist group by fname having number > 
       (select count(*) as number from userlist where fname=@name) order by number desc) as tab; 
...