如何在SQL的ORDER BY子句中添加多条件模式排序?
多匹配模式的ORDER BY排序实现
你只需要在CASE语句里扩展更多WHEN分支,给不同的匹配模式分配不同的优先级数值,数值越小排序越靠前,最后按这个数值升序排列即可。
针对你的需求,完整的SQL代码如下:
SELECT * FROM Customers ORDER BY ( CASE WHEN Country LIKE 'As%' THEN 0 -- 以As开头的优先级最高,排最前 WHEN Country LIKE 'Ge%' THEN 1 -- 以Ge开头的次之 WHEN Country LIKE 'Fr%' THEN 2 -- 以Fr开头的排在第三 ELSE 3 -- 其他所有国家排在最后 END ) ASC;
逻辑说明:
- 每个
WHEN分支对应一个匹配规则,返回的数字直接决定该条记录的排序优先级 ASC表示按优先级数值从小到大排序,因此0(As开头)会排在最前面,接着是1(Ge开头)、2(Fr开头),最后是3(其他国家)- 如果需要调整排序顺序,只需修改
THEN后的数字,或者将ASC改为DESC即可
内容的提问来源于stack exchange,提问作者Tanu
相关产品推荐
相关产品推荐

