我有这列叫做code
看起来像:1-100-ETC-60
,1-100-ETC-20
,1-100-ETC-70
使用MySQL的ORDER BY子句中,是有可能为了通过某些字段和自定义为了
最后两个字符总是要开始或者6,2或7.
如果我按ORDER BY SUBSTRING(code,13)ASC或DESC进行排序,它们将按数字顺序排序。以为这不是我想要的(或客户想要的)。
正确的排序顺序应该是:6,然后2然后7
只是想知道这是否可能只通过使用SQL查询。
我有这列叫做code
看起来像:1-100-ETC-60
,1-100-ETC-20
,1-100-ETC-70
使用MySQL的ORDER BY子句中,是有可能为了通过某些字段和自定义为了
最后两个字符总是要开始或者6,2或7.
如果我按ORDER BY SUBSTRING(code,13)ASC或DESC进行排序,它们将按数字顺序排序。以为这不是我想要的(或客户想要的)。
正确的排序顺序应该是:6,然后2然后7
只是想知道这是否可能只通过使用SQL查询。
你可以使用MySQL的FIELD()
功能:
ORDER BY FIELD(SUBSTRING(code, 11, 1), '6', '2', '7')
使用case语句。
ORDER BY CASE WHEN SUBSTRING(code,11) = '6' THEN '1' + substring(code, 12) ELSE SUBSTRING(code,11) END
应在6转换为一个用于与2并且在这种情况下,7排序
(子串是1索引在MySQL,所以它是11,而不是10)
你想添加“,SUBSTRING(code,12)”到那个以正确的顺序得到其余的代码,如果它包括60,61,62等,对吗? – Ghost
@ user1428799:听起来对我很好。 – eggyal
这就是我所做的。运作良好。谢谢。这个也比CASE方法稍短。 – 40Plot