根据特定值出现的次数从select语句中返回

时间:2011-09-22 11:35:14

标签: mysql

我有一个一般性的问题,我想问一下MySQL并在SELECT语句中使用ORDER BY命令。特别是,我想知道是否可以计算特定值在数据库中出现的次数,并根据此count语句对数据库进行排序。例如,如果我有一个包含以下player_ids的播放器表:

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次)。如果有人可以提供帮助,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

您需要针对player_id的COUNT选择ID,并使用'GROUP BY'确保针对每个个人ID进行计数。如果要添加结果而不是计算结果,则使用SUM代替GROUP BY。要按结果数量订购整批产品,请使用ORDER BY并使用与以前相同的COUNT命令。

您的陈述将如下所示: -

从table1,table2中选择id,count(id),其中table1.id = table2.keyid group by id order by count(id)descending;

答案 1 :(得分: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