MYSQL - 如何订购通过使用特定订单,然后使用ASC获取未识别的值

时间:2012-08-20 16:06:59

标签: mysql

我见过很多关于如何使用特定订单排序的线程,而不是使用默认的ASCDESC选项。但是,我在列中有一系列值,我希望1个特定值始终位于顶部,一个特定值,我希望始终位于底部,其他所有值都可以由ASC在其间进行排序。我将在下面提供一个通用示例。想象一下,我有一列如下信息。

Value1 | Value5 | Value3 | Value9 | Value8 | Value7 | Value5 | Value3 | Value6

注意:为了争论,请假装这是一列而不是一行信息。在这个论坛上间距更容易横向呈现它。请想象它是一个垂直列表。

我希望Value5位于订单的顶部,而Value3位于底部。这样就会按以下顺序返回信息行:

Value5 | Value5 | Value1 | Value6 | Value7 | Value8 | Value9 | Value3 | Value3

请注意,5是第一个,3是最后一个,其他所有内容都按字母顺序返回。

我正在使用PHP,以防这种情况有任何影响。

1 个答案:

答案 0 :(得分:4)

您需要在查询的ORDER BY子句中使用条件语句:

ORDER BY CASE WHEN col = 'Value5' THEN 1
              WHEN col = 'Value3' THEN 3
              ELSE 2 END ASC,
         col ASC