ORDER BY MySQL语句

时间:2015-07-14 11:38:17

标签: php mysql

我正在尝试订购存储在MySQL表中的选项列表。问题是,结果是多种多样的,我希望它们有一种特定的显示方式。我一直在尝试ORDER BY子句中的SUBSTRINGSUBSTRING_INDEX函数,但是没有得到我之后的确切顺序..

我尝试排序的数据(以及我正在寻找的结果):

1 Colour Print (white base)
2 Colour Print (white base)
3 Colour Print (white base)
4 Colour Print (white base)
1 Colour Print (coloured base)
2 Colour Print (coloured base)
3 Colour Print (coloured base)
4 Colour Print (coloured base)
Embroidered (white base up to 5000)
Embroidered (coloured base up to 5000)

然而,我能得到的最接近的是:

1 Colour Print (coloured base)
2 Colour Print (coloured base)
3 Colour Print (coloured base)
4 Colour Print (coloured base)        
1 Colour Print (white base)
2 Colour Print (white base)
3 Colour Print (white base)
4 Colour Print (white base)
Embroidered (coloured base up to 5000)
Embroidered (white base up to 5000)

我使用的查询是:

select * from options ORDER BY SUBSTRING(optionName, 4);

我也试过SUBSTRING_INDEX,但这更加麻烦......

这是可能还是我应该承认失败?

1 个答案:

答案 0 :(得分:3)

只要彩色中的c来自w之前的字母表中的白色,就不可能这样做。

好吧,除非你想要一个非常复杂的解决方案:

 SELECT * FROM options ORDER BY
   SUBSTRING(optionName, 4, 1),
   SUBSTRING(optionName, 18, 1),
   SUBSTRING(optionName, 1, 1)

如果您可以选择修改表格结构,我建议添加sortOrder列。