You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整SQL查询排序,使hierarchy_id为*的记录优先且其余保持原序?

解决rebate_agreement表排序异常的问题

你需要调整ORDER BY子句的逻辑,确保先按hierarchy_id的优先级排序,再对非'*'的记录严格执行agreement_id升序。正确的SQL语句如下:

SELECT *
FROM rebate_agreement
WHERE Customer_no = 'Kap-ST'
ORDER BY 
    -- 将hierarchy_id为'*'的记录排在最前面
    CASE WHEN hierarchy_id = '*' THEN 0 ELSE 1 END,
    -- 非'*'的记录按agreement_id升序排列
    agreement_id ASC;

问题原因分析

你之前的写法大概率是没有明确在CASE之后添加agreement_id的升序排序,或者错误地将agreement_id的排序逻辑整合到CASE语句中(比如用CASE返回agreement_id或某个特定值),导致非'*'记录的排序规则被打乱。

上述写法中:

  1. 用CASE语句将hierarchy_id为''的标记为0,其余标记为1,0的排序优先级高于1,确保''的记录先展示。
  2. 紧接着指定agreement_id ASC,保证同一优先级组内的记录严格按agreement_id的升序排列,这样KAPA2会自然排在KAPA3前面,符合你的预期。

内容的提问来源于stack exchange,提问作者Kaumadie Prabashinie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:40:25