2011-09-22 36 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 
相关问题