SQL排序依据每个不同的值

时间:2018-08-09 14:30:23

标签: mysql sql sorting sql-order-by

我的表格中有列:名称,类别和得分。我希望按类别的得分对它们进行排序,但我也需要按类别对它们进行排序,如下所示:

  1. 类别:A,得分:25(A类别中得分最高)
  2. 类别:B,得分:10
  3. 类别:C,得分:30
  4. 类别:A,得分:24
  5. 类别:B,得分:9
  6. 类别:C,得分:29
  7. 类别:A,得分:23 等等...

是否有一种使用ORDER BY来排序结果的方法?还是稍后必须对结果使用自定义排序周期?谢谢!

3 个答案:

答案 0 :(得分:1)

这应该可以解决问题。我已经将ROW_NUMBER函数模拟为计算列(按类别进行分区),然后仅在新列和类别之后对结果进行排序。

SELECT a.category, a.score, (
    SELECT count(*) from tbl b where a.score <= b.score AND a.category = b.category
) AS row_number
FROM tbl a
order by row_number, category

您可以here对其进行测试。

答案 1 :(得分:0)

我有和ASC和DESC一起玩的想法

SELECT  name, category, score FROM table ORDER BY category , score DESC

也许这可以帮助您(显示查询结果)。祝你好运。

答案 2 :(得分:0)

尝试此查询:

select @cat := '', @rn := 0;
select Category, Score from (
  select case when @cat = Category then @rn := @rn + 1 else @rn := 1 end rn,
         @cat := Category, 
         Category, 
         Score
  from tbl
  order by Category, Score desc
) a order by rn, Category

Demo