sql按不同值排序

u7up0aaq  于 2021-06-23  发布在  Mysql
关注(0)|答案(3)|浏览(342)

我有一个列的表:name,category和score。我希望按类别分数排序,但我也需要按类别排序,如下所示:
类别:a,得分:25分(类别最高分)
b类10分
c类,30分
类别:a,得分:24
b类,9分
c类,29分
类别:a,分数:23等。。。
有没有办法用order by来排序这样的结果?或者我必须在以后的结果中使用自定义排序循环?谢谢!

mctunoxg

mctunoxg1#

我想和asc和desc一起玩

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

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

ecfsfe2w

ecfsfe2w2#

这应该能奏效。我将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

你可以在这里测试。

wvyml7n5

wvyml7n53#

尝试此查询:

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

演示

相关问题