首页 > 解决方案 > MySQL - ORDER BY 多个单词,然后按字母顺序?

问题描述

如何将查询的这一部分更改为首先按顺序排列多个单词,然后按字母顺序排列其余结果?

ORDER BY CASE WHEN name LIKE '%Professional%' THEN 0 ELSE 1 END asc, name asc

所以,它需要是:

'%Professional%' 1
'%Leader%' 2
'%Advocate%' 3
'%Clinician%' 4
'%Educator%' 5
'%Scholar%' 6

然后按字母顺序排列所有其他结果。

标签: mysqlsql

解决方案


您可以CASE使用每个所需的单词来扩展您的表达式:

ORDER BY 
CASE WHEN name LIKE '%Professional%' THEN 1
     WHEN name LIKE '%Leader%' THEN 2
     WHEN name LIKE '%Advocate%' THEN 3
     WHEN name LIKE '%Clinician%' THEN 4
     WHEN name LIKE '%Educator%' THEN 5
     WHEN name LIKE '%Scholar%' THEN 6
     ELSE 7
END,
name

推荐阅读