我见过很多关于如何使用特定订单排序的线程,而不是使用默认的ASC
或DESC
选项。但是,我在列中有一系列值,我希望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,以防这种情况有任何影响。
答案 0 :(得分:4)
您需要在查询的ORDER BY
子句中使用条件语句:
ORDER BY CASE WHEN col = 'Value5' THEN 1
WHEN col = 'Value3' THEN 3
ELSE 2 END ASC,
col ASC