如何正确制作ORDER BY Ladder?

时间:2018-04-18 12:10:00

标签: mysql sql mariadb

我有这个查询:

SELECT id 
FROM table 
ORDER BY
        column = 'A B C D E F G' DESC,
        column = 'A B C D E F' DESC,
        column = 'A B C D E' DESC,
        column = 'A B C D' DESC,
        column = 'A B C' DESC,
        column = 'A B' DESC,
        column = 'A' DESC
GROUP BY id

我在ORDER BY中使用了梯形图方法我可能有多个像这样的堆叠梯子:

A B C D E F G H I K L M 
A B C D E F G H I K L
A B C D E F G H I K
A B C D E F G H I
A B C D E F G H
A B C D E F G
A B C D E F
A B C D E
A B C D
A B C
A B
A
N O P Q R S T V X Y Z
N O P Q R S T V X Y
N O P Q R S T V X
N O P Q R S T V
N O P Q R S T
N O P Q R S
N O P Q R
N O P Q
N O P
N O
N

有没有更好的方法来执行此操作ORDER BY而不是为梯子的每一步制作一条线?我可以PHP function来处理这项工作,但这对MySQL来说是否有用?

或者您将如何处理这样的查询?我关注Performance

在SQLFiddle http://sqlfiddle.com/#!9/9f4c815/4/1

中获取以下结果

1 个答案:

答案 0 :(得分:3)

我认为这可以满足您的需求:

order by substring_index(col, ' ', 1),
         length(col) desc