编程语言
首页 > 编程语言> > 显示获得Myals / php奖牌的最佳球员

显示获得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

An SQLfiddle to test with.

或者,一次获取所有信息;或者

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

Another SQLfiddle.

标签:sql-order-by,mysql,php
来源: https://codeday.me/bug/20191122/2061584.html