我的表格中有列:名称,类别和得分。我希望按类别的得分对它们进行排序,但我也需要按类别对它们进行排序,如下所示:
是否有一种使用ORDER BY来排序结果的方法?还是稍后必须对结果使用自定义排序周期?谢谢!
答案 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