mysql顺序最大然后第二大

时间:2015-05-15 09:39:25

标签: mysql

我有一张得分表:

User / Score 1 / Score 2 / Score 3
Person 1: 10 21 7
Person 2: 21 4 20
Person 3: 1 5 22

我试图将它们分类为最高的个人得分,然后是第二高的个人得分。

我能做的第一部分。

我知道如何ORDER BY GREATEST(score1, score2, score3) DESC

但是我不确定如何设置第二大的二级排序,所以如果它是一个平局,那么它由玩家的第二高分决定。

理想情况下,我的结果将是:

User / Score 1 / Score 2 / Score 3
Person 3: 1 5 22
Person 2: 21 4 20
Person 1: 10 21 7

有没有人有任何想法?

2 个答案:

答案 0 :(得分:2)

试试这个:

SELECT User, score1, score2, score3 FROM YourTable
ORDER BY GREATEST(score1, score2, score3) DESC,
    (score1 + score2 + score3) - GREATEST(score1, score2, score3) - LEAST(score1, score2, score3) DESC,
LEAST(score1, score2, score3) DESC

ORDER BY声明的细分:

  • 第一行按最大值排序
  • 第二行按中间值排序(即总数减去最大和最小)
  • 第三行按最小值排序

答案 1 :(得分:0)

试试这个。

   SELECT NAME, score1, score2, score3 FROM score
    ORDER BY GREATEST(score1, score2, score3) DESC,
        (score1+ score2+ score3) - GREATEST(score1, score2, score3) -
                                              LEAST(score1, score2, score3) DESC,
    LEAST(score1, score2, score3) DESC;