使用MYSQL ORDER BY子句,是否可以按自定义顺序对某些字段进行ORDER BY

时间:2012-06-29 16:44:02

标签: php mysql sorting

我有一个名为code的专栏,如下所示:1-100-ETC-601-100-ETC-201-100-ETC-70

最后两个字符始终以6,2或7开头。

如果我执行ORDER BY SUBSTRING(代码,13)ASC或DESC,它将按数字顺序对它们进行排序。认为这不是我想要的(或客户想要的)。

正确的排序顺序应该是:6然后是2然后是7.

只想通过使用SQL查询来了解这是否可行。

2 个答案:

答案 0 :(得分:3)

您可以使用MySQL的FIELD()功能:

ORDER BY FIELD(SUBSTRING(code, 11, 1), '6', '2', '7')

答案 1 :(得分:1)

使用案例陈述。

 ORDER BY CASE WHEN SUBSTRING(code,11) = '6' THEN '1' + substring(code, 12) ELSE SUBSTRING(code,11) END 

应将6转换为1,以便在本例中将2和7转换为

(在mysql中索引的子串是1,所以它是11,而不是10)