我有这个查询:
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
中获取以下结果答案 0 :(得分:3)
我认为这可以满足您的需求:
order by substring_index(col, ' ', 1),
length(col) desc