显示获得Myals / php奖牌的最佳球员
作者:互联网
我有这样的奖牌表:
有3行:奖牌ID,奖牌类型(0 =金,1 =银,2 =青铜)和玩家编号
所以我有一个例子:
id | type | Playerid
--- ---- ---------
1 0 1
2 2 1
3 0 1
4 1 2
5 1 2
6 0 3
*这是指:
玩家1拥有两枚金牌和一枚铜牌
玩家1拥有2枚银牌
玩家3拥有1枚铜牌
所以我不能按最后谁的先后顺序向他们展示谁是最好的:
玩家1,因为他拥有玩家1,并且还有2枚金牌
玩家3甚至只有1枚奖牌,但它是金牌
玩家2是最后一个,即使他拥有2枚奖牌,但它是银牌
因此,我希望您了解我不想按所拥有的奖牌总数来订购它们,而是按其拥有的奖牌类别来排序
例如:如果玩家X拥有2枚金牌,1枚银牌和0枚铜牌,但是玩家Y拥有1枚金牌,10枚银牌和5枚铜牌,那么即使X玩家应该是第一个,因为他拥有最多的金牌! .
我希望我能正确解释这个问题.
为您提供有关如何通过mysql查询和php进行创建的建议.
问候.
解决方法:
在MySQL中,按类别计数进行排序非常简单;
SELECT playerid
FROM medals
GROUP BY playerid
ORDER BY SUM(type=0) DESC, SUM(type=1) DESC, SUM(type=2) DESC
或者,一次获取所有信息;或者
SELECT playerid, SUM(type=0) Gold, SUM(type=1) Silver, SUM(type=2) Bronze
FROM medals
GROUP BY playerid
ORDER BY Gold DESC, Silver DESC, Bronze DESC
标签:sql-order-by,mysql,php 来源: https://codeday.me/bug/20191122/2061584.html