我已经看到许多关于如何使用特定顺序而不是使用默认的ASC
或DESC
选项进行排序的主题。但是,我在列中有一系列值,我希望一个特定值始终位于顶部,一个特定值我希望始终位于底部,其他所有值都可以通过ASC在两者之间进行排序。让我在下面提供一个通用示例。想象一下,我有一列信息如下。
Value1 | Value5 | Value3 | Value9 | Value8 | Value7 | Value5 | Value3 | Value6
注意:为了便于讨论,请假装这是一栏而不是一行信息。在此论坛上以水平显示的间距很容易。请想象这是一个垂直列表。
我希望
Value5
在订单的顶部,Value3在底部。这样信息行将按以下顺序返回:Value5 | Value5 | Value1 | Value6 | Value7 | Value8 | Value9 | Value3 | Value3
请注意,5排在最前面,3排在最后,其他所有内容均按字母顺序返回在这两个值之间。
我正在使用PHP,以防万一。
最佳答案
您需要在查询的ORDER BY
子句上使用条件语句:
ORDER BY CASE WHEN col = 'Value5' THEN 1
WHEN col = 'Value3' THEN 3
ELSE 2 END ASC,
col ASC