我有一个一般性的问题,我想问一下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次)。如果有人可以提供帮助,我们将不胜感激。
答案 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