2013-02-27 56 views
0

我有命中爲各種用戶的表:查詢獲得分組項目排名?

HITS: 
id | userid 
1 | 1  
2 | 1  
3 | 2  
4 | 1  
5 | 2  
6 | 2  

我想最快的方式來獲得這些物品通過ID排名列表。所以這個:

HITS RANKED: 
id | userid | ranks 
1 | 1  | 1 
2 | 1  | 2 
3 | 2  | 1 
4 | 1  | 3 
5 | 2  | 2 
6 | 2  | 3 

我想避免將兩個表連接到對方,當表獲得大這需要永遠。還有其他建議嗎?

+0

什麼ü由ID等級是什麼意思? – DevT 2013-02-27 08:52:03

+0

我認爲排序可能會更有意義嗎?基本上,用戶ID爲1的用戶名爲1,用戶1的用戶名爲2,用戶3的用戶名爲2,用戶名爲3。 – supercoder 2013-02-27 08:57:49

+0

也許每個分組的排序順序可能會使更多sensE? – supercoder 2013-02-27 08:58:09

回答

1
SELECT ID, 
     UserID, 
     Ranks 
FROM 
    (
     SELECT id, 
       userid, 
       @group:=CASE WHEN @temp <> userid THEN 1 ELSE @group+1 END AS ranks, 
       @temp:=userid AS clset 
     FROM (SELECT @group:= 0) s, 
       (SELECT @temp:= 0) c, 
       (SELECT * FROM hits ORDER BY userid, id) t 
    ) x 
ORDER BY ID