SQL中对员工姓名排序时如何为单个指定员工设置优先排序规则
问题原因
你现有写法存在两个问题:
- 仅设置了第一维度的分组排序规则,只能保证Mahesh排在最前,其余员工没有指定排序逻辑,无法实现按姓名升序的要求
- 表名使用错误,你实际的表名为
TB1而非Employee
正确写法
SELECT * FROM TB1 ORDER BY CASE WHEN Emp_name = 'Mahesh' THEN 1 ELSE 2 END, Emp_name ASC;
逻辑说明
- 第一排序项通过CASE表达式设置优先级:姓名为Mahesh的记录排序权重为1,其余所有记录权重为2,确保Mahesh永远排在结果集第一位
- 第二排序项指定按
Emp_name升序排列,权重同为2的其余员工会按照字符顺序升序排列,最终输出和你要求的结果完全一致 - 如果需要模糊匹配包含Mahesh的姓名,可以把
Emp_name = 'Mahesh'替换为Emp_name LIKE '%Mahesh%',精准匹配场景下用等号查询效率更高
内容的提问来源于stack exchange,提问作者Michael Scofield
相关产品推荐
相关产品推荐

