如何在mysql查询中获得排序结果?

Posted

技术标签:

【中文标题】如何在mysql查询中获得排序结果?【英文标题】:how to get a sorted result in mysql query? 【发布时间】:2015-02-12 11:31:40 【问题描述】:

我正在尝试从 mysql 查询中获取排序结果,但我不知道如何进行查询。

我有一个示例 Mysql 表如下:

     id | cat_type
     1  |  free
     2  |  free
     3  |  free
     4  |  free
     5  |  paid
     6  |  paid
    ... |  ...
    ... |  ...
    ... |  ...
   and it goes on.

上表的结果应该如下:

     id | cat_type
     1  | free 
     2  | free 
     5  | paid

     3  | free 
     4  | free 
     6  | paid

    ... | free
    ... | free
    ... | paid
  and goes on(should be sorted)

总的结果应该被拆分为3。在前三个结果中,前两个应该是free,下一个应该是paid,同样所有剩余的结果应该被排序为两个free和一个@ 987654326@.

知道如何使用查询来完成此任务吗?

注意:最重要的是它应该被分类为两个免费和一个付费。不是 ID。

谢谢。

【问题讨论】:

php 中做,mysql 也不是为复杂的分组顺序而设计的。 我可以使用php完成,但我需要在mysql查询@Mihai中完成 【参考方案1】:

对于您的特定数据,您可以这样做:

order by (case when cat_type = 'free' then id*1.0
               else 2*id - 7.5
          end)

这似乎非常神秘。如果您有更普遍的问题,您应该提出另一个问题,更好地描述您真正想要完成的任务。

【讨论】:

感谢@GordonLinoff 的回答。如果表有更多记录,如何获得排序结果。

以上是关于如何在mysql查询中获得排序结果?的主要内容,如果未能解决你的问题,请参考以下文章

mysql查询结果排序

21《MySQL 教程》ORDER BY 排序

如何在同一个表上组合两个查询以在 MySQL 中获得单个结果集

MongoDB:如何对 MySQL 字段关键字等结果中的记录进行排序 [重复]

MongoDB:如何对 MySQL 字段关键字等结果中的记录进行排序 [重复]

为啥选择查询在 mysql 集群中显示未排序的结果?