如何基于多列实现特定规则的记录强制排序?
解决方案
你只需要调整ORDER BY中的判断逻辑,同时匹配两列的条件即可实现需求:
正确的排序语句
ORDER BY CASE WHEN Col1 = 'Val_1' AND Col2 = 'Val_1' THEN 1 ELSE 0 END ASC, -- 可选:添加其他排序规则,比如保持原ID顺序或其他列排序 ID ASC
逻辑说明
- 当某条记录的Col1和Col2同时等于Val_1时,CASE语句返回
1,否则返回0 - 按这个结果升序排列,所有返回
0的记录会排在前面,仅返回1的那条记录(ID=3)会被排到最底部 - 后面的
ID ASC用来保证其他非目标记录的顺序和你期望的一致,你也可以根据实际需求替换成其他排序规则(比如Col1、Col2的顺序)
执行结果
执行上述语句后,会得到你期望的排序结果:
| ID | Col1 | Col2 |
|---|---|---|
| 1 | Val | Val |
| 5 | Val | Val |
| 4 | Val | Val_1 |
| 2 | Val_1 | Val |
| 3 | Val_1 | Val_1 |
内容的提问来源于stack exchange,提问作者Avery1
相关产品推荐
相关产品推荐

