【问题标题】:Multiple level ordering多级排序
【发布时间】:2011-08-10 04:20:05
【问题描述】:

我有一个表,其中包含一些记录,其中包含名称、评级等字段。

我首先想根据评级限制结果进行排序,将结果限制为 20,然后在此结果集上进一步应用基于名称的排序。

我知道排序我们需要使用类似的查询

Select * from table order by rating Desc limit 20

但是在这个结果集上如何应用另一个级别的排序?如何将这两种类型组合在一个 sqlite 语句中?

【问题讨论】:

    标签: sql sqlite sorting


    【解决方案1】:

    你可以使用例如ORDER BY rating DESC, name ASC 按评级排序,如果评级相同,则按名称排序。

    【讨论】:

    • 在 SQL 中 ASC 是默认值,所以它可以是 ORDER BY rating DESC, name
    • @VasileDoe:是的,你可以,而且我认为如果你在同一个语句中有任何不是 ASC 的东西,那么这样做是非常难看的。
    • 但是要按名称排序 20 个最好的(问题是什么),你必须使用 @JuanBoca 的建议,虽然丑陋
    • 为了完整性:Select * from table ORDER BY rating DESC, name ASC
    • 太棒了,真的很简单。
    【解决方案2】:

    这个查询应该可以解决问题:

    SELECT * FROM (SELECT * FROM table ORDER BY rating DESC LIMIT 20) ORDER BY name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 2019-05-24
      相关资源
      最近更新 更多