2017-02-11 3 views
0

私はMySQLの初心者で、この問題の解決策を数時間探しています。私はいくつかの答えを見つけましたが、それらを実装するように見えません。検索をエミュレートし、返された行の行番号を取得します(合計から)

基本的には、相続人は私が何をしたい:

私は与えられた国からのユーザーは、彼らがためにID

によってランク付けされている同じ国から他のユーザーに比べてランク付けする方法を見つけたいです例:
ジョーはID 10で、100人のユーザーが米国
結果からあり、米国
からである:ジョーは10日

がどのように私はこれを変換しますランクMySQLのクエリ?

ありがとうございます。

+0

いくつかのデータを表示するテーブル – denny

+0

は同じIDとランクですか? – affaz

+0

私のテーブルでは、** id **と** country ** –

答えて

1

作成2ユーザー変数、例えば、前回のランク番号を取得し、それに応じて、テーブル

tablenameを交換してください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; 

ことで、現在の値をインクリメントすることによってcountryのランク数を計算running & previous

関連する問題