MySQL - 按ASC或DESC的顺序排序

时间:2011-05-12 06:55:18

标签: mysql sql sql-order-by

说我有一张鲜花和相关颜色的桌子。是否有可能获得鲜花列表并按顺序排序,比如先Yellow,然后Blue,然后Red。基本上,我想指定一个值列表,并按这些值对结果进行排序。可能的?

3 个答案:

答案 0 :(得分:10)

您可以使用FIND_IN_SET:

ORDER BY FIND_IN_SET(column, 'Yellow,Blue,Red')

..或ANSI CASE声明:

ORDER BY CASE column
           WHEN 'Yellow' THEN 1
           WHEN 'Blue' THEN 2
           WHEN 'Red' THEN 3
         END

答案 1 :(得分:2)

您可以在sort_order的颜色表中添加字段,并根据排序要求提供值。在查询中,您可以使用ORDER BY sort_order ASC

我希望你能根据动态要求订购它,而不是明确提到这三种颜色。这将允许您完全灵活地管理排序顺序。

答案 2 :(得分:2)

我的选择是使用FIELD(str, str1, str2, ...)功能。

  

返回str的索引(位置)   str1,str2,str3,...列表。   如果未找到str,则返回0。

因此,您可以使用返回值来排序结果列表:

ORDER BY FIELD (color, 'Yellow', 'Blue', 'Red')

如果您想要撤销订单,只需添加DESC