0

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

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

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

我想Value5在订单的顶部,而 Value3 在底部。这样信息行将按以下顺序返回:

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

请注意,5 排在第一位,3 排在最后,其他所有内容都按这两个值之间的字母顺序返回。

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

4

1 回答 1

4

您需要关于ORDER BY查询子句的条件语句:

ORDER BY CASE WHEN col = 'Value5' THEN 1
              WHEN col = 'Value3' THEN 3
              ELSE 2 END ASC,
         col ASC
于 2012-08-20T16:09:57.677 回答