按几列对mysql结果进行排序

时间:2013-09-04 19:05:21

标签: php mysql arrays sorting

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

  1. 积分(赢得一系列3场比赛2分)
  2. 游戏中的差异(游戏赢了 - 输了)
  3. 现在我有一个积分表,一个用于赢得个别游戏,一个用于个别游戏丢失。

    我从数据库中按结果排序得到结果(ORDER BY points DESC)。问题出在个人排名上。如果A队和B队的得分相同,但是B队在赢得的比赛和失去的比赛中有更高的积极差异,那么B队的排名将高于A队。

    由于所有比赛都不会同时进行,而且有些球队可能会落后于他们的赛程,一个完全可能的情况是一支球队赢得更多胜利,而另一支球队的差距更大。

    现在,我能够提出的唯一解决方案如下:

    1. 从数据库中获取数据(按点排序)
    2. 计算每个点值的出现次数(例如:9pts.x2,7pts.x5 ......)
    3. 根据步骤2制作所需的阵列数。
    4. 再次根据点值将数据分类到这些数组中。
    5. 如果数组的长度超过1,则根据赢得的游戏和丢失的游戏之间的差异对其进行排序。
    6. 打印最终结果。
    7. 这对我来说似乎非常低效。有更好的想法吗?

1 个答案:

答案 0 :(得分:1)

这将有效:

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

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