MySQL中使用LIKE实现ORDER BY自定义排序的正确语法
正确SQL实现
SELECT * FROM `table` ORDER BY CASE WHEN `NAME` LIKE '%Bob%' THEN 1 WHEN `NAME` LIKE '%Alex%' THEN 2 ELSE 3 END, `NAME`
语法解释
- 你之前的写法报错是因为使用了仅支持等值匹配的简单CASE表达式,这类写法的
WHEN后只能跟固定匹配值,不支持直接写LIKE这类条件判断逻辑 - 改用搜索CASE表达式即可实现自定义条件排序:CASE后不接字段,每个WHEN子句写完整的判断条件
- 上述写法会自动将同时包含Bob和Alex的行归到第一优先级,符合你的排序要求
- 末尾追加的
,NAME``为可选配置,用于相同优先级的行按NAME字段本身正序排列,不需要可以直接删除
内容的提问来源于stack exchange,提问作者user17193038
相关产品推荐
相关产品推荐

