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