按几列对 mysql 结果进行排序


Sorting mysql results by several columns

我正在构建一个锦标赛系统,需要根据两个标准对球队进行排序:

  1. 积分(赢得一系列 3 场比赛得 2 分)
  2. 游戏差异(游戏赢 - 输)

现在我有一个积分表列,一个用于赢得的个人比赛,一个用于输掉的个人比赛。

我从按点排序的数据库中得到结果(按点排序)。问题出在个人排名上。如果A队和B队的积分相同,但B队在赢得和输掉的比赛之间的差距更高,正,那么B队的排名将高于A队。

由于所有比赛不会在同一时间进行,而且有些球队可能会落后于他们的日程安排,因此完全可能的情况是一支球队比另一支球队赢得更多,但差异更差。

现在我能想到的唯一解决方案如下:

  1. 从数据库中获取数据(按点排序)
  2. 计算每个点值的出现次数(例如:9pts.x2、7pts.x5...)
  3. 根据步骤 2 确定所需的数组数量。
  4. 将数据
  5. 排序到这些数组中,同样取决于点值。
  6. 如果数组的长度大于 1,则根据赢得的比赛和输掉的比赛之间的差异对其进行排序。
  7. 打印最终结果。

这对我来说似乎效率很低。有什么更好的主意吗?

这将起作用:

select name, wins, losses, points, (wins - losses) as "diff"
from teams
order by points desc, diff desc

演示:http://sqlfiddle.com/#!2/4ea97/1