【问题标题】:Sort by different columns按不同列排序
【发布时间】:2012-10-25 12:23:52
【问题描述】:

我有这些数据,在一个表中categories

id | name | post_count
 1 | A    | 10
 2 | B    | 15
 3 | C    | 8
 4 | D    | 14
 5 | E    | 1
 6 | F    | 20

我想按post_count 获取前4 个类别,并按name 排序。

如果我这样做

SELECT * FROM categories ORDER BY post_count DESC LIMIT 4

我将按顺序获取类别:F, B, D, A,而我想要A, B, D, F

这可以通过单个 SQL 查询实现吗?我该怎么做?

【问题讨论】:

  • 为什么有这么多数据库标签?您是否希望它在所有这些不同的数据库中兼容?如果是这样,指定版本会有所帮助...... MySQL 3.x 或 PostgreSQL 7.1 在功能上与 PostgreSQL 9.2 或 MySQL 5.6 截然不同。

标签: mysql sql postgresql sqlite


【解决方案1】:

您可以使用子查询:

SELECT * FROM (SELECT * FROM 
               categories ORDER BY 
               post_count DESC LIMIT 4) AS A
ORDER BY name 

See this SQLFiddle

【讨论】:

    【解决方案2】:
    select * from (
    
    SELECT * FROM categories ORDER BY post_count DESC LIMIT 4)a
    order by name
    

    【讨论】:

    • 我有时不会得到那些随机的-1。上面的相同答案得到+1并且它是正确的。不要再互相憎恨了,我们是来帮忙的。
    【解决方案3】:
    select *
    from (
        select *
        from categories
        order by post_count desc
        limit 4
    ) s
    order by name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      相关资源
      最近更新 更多