2011-09-22 49 views
0

我有一個普遍問題,我想問一下關於MySQL並在SELECT語句中使用ORDER BY命令。特別是,我想知道是否可以計算特定值出現在數據庫中的次數,並根據此計數語句對數據庫進行排序。舉例來說,如果我有以下player_ids玩家表:根據特定值出現的次數從select語句中返回排序

player_id 
1 
2 
3 
4 
5 

,並與下面的遊戲和玩家ID的遊戲桌:

game_id player_id 
0  5 
1  2 
2  5 
3  1 
4  3 
5  4 
6  3 
7  5 
8  4 

我希望能夠從選擇球員玩家表並按它們出現在數據庫中的次數來組織它們。例如,這會首先返回玩家5(因爲player_id發揮的遊戲數量最多),其次是玩家3和4.有沒有辦法可以做到這一點?同時,我不想重複記錄(例如,玩家5的記錄只需要返回一次而不是3次)。如果有人可以幫忙,將不勝感激。

+1

歡迎StackOverflow的:因爲你是新來的我記得你應該[接受一個答案(http://meta.stackexchange.com/questions/5234/how-does如果你發現解決了(或幫助解決)了你的問題,那麼就可以接受答案)。 – Marco

回答

0

您需要根據player_id的COUNT值選擇ID並使用'GROUP BY'來確保計數是針對每個個人ID完成的。如果你想合併結果而不是計數它們,那麼使用SUM來代替GROUP BY。要按結果數量排序整個批次,請使用ORDER BY並使用與以前相同的COUNT命令。

你的聲明將是這個樣子: -

選擇ID,計數(ID)從表1,表2,其中table1.id = table2.keyid組由ID爲了通過數量(ID)下降;

0

試試這個:

SELECT p.*, COUNT(g.game_id) tot_games 
FROM players p INNER JOIN game g 
ON p.player_id = g.player_id 
GROUP BY p.player_id 
ORDER BY tot_games DESC