验证按自定义risk优先级+category排序的SQL查询正确性
自定义排序SQL语句正确性验证
未排序数据表
| risk | category |
|---|---|
| Low | A |
| Medium | B |
| High | C |
| Medium | A |
| Low | B |
| High | A |
| Low | C |
| Low | E |
| Low | D |
| High | B |
排序需求与预期结果
需要先按risk字段的自定义优先级(Low→Medium→High)排序,再按category字段升序排序,预期结果如下:
| risk | category |
|---|---|
| Low | A |
| Low | B |
| Low | C |
| Low | D |
| Low | E |
| Medium | A |
| Medium | B |
| High | A |
| High | B |
| High | C |
编写的SQL语句
SELECT * FROM some_table ORDER BY CASE WHEN risk = 'Low' THEN 0 WHEN risk = 'Medium' THEN 1 WHEN risk = 'High' THEN 2 ELSE 3 END, category;
验证结论
你编写的SQL语句完全正确,能够满足需求:
CASE语句为risk字段的不同值分配了明确的排序权重:Low对应0,Medium对应1,High对应2,未匹配的值对应3,确保排序优先级是Low→Medium→High;- 排序时先按这个自定义权重升序排列,再按
category字段默认的升序规则排序,最终结果和预期完全一致。
内容的提问来源于stack exchange,提问作者saran3h
相关产品推荐
相关产品推荐

