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

如何对两张不同表的两列数据按主步骤+子步骤规则排序

实现方案

我们可以通过UNION ALL拼接两张表的记录,新增辅助排序字段即可实现需求,通用SQL写法如下:

SELECT StepName, OrderVal AS `Order`
FROM (
    -- 拉取主步骤数据
    SELECT 
        StepName,
        StepOrder AS OrderVal,
        StepOrder AS group_sort,
        1 AS sort_priority
    FROM Table1

    UNION ALL

    -- 拉取子步骤数据,关联主步骤表获取分组排序依据
    SELECT 
        t2.StepName,
        t2.SubStepOrder AS OrderVal,
        t1.StepOrder AS group_sort,
        2 AS sort_priority,
        t2.SubStepOrder AS sub_sort
    FROM Table2 t2
    JOIN Table1 t1 ON t2.StepName = t1.StepName
) AS combined_data
ORDER BY
    group_sort ASC, -- 先按主步骤全局顺序排列
    sort_priority ASC, -- 同主步骤下主记录优先展示
    sub_sort ASC -- 子步骤按自身顺序升序排列

逻辑说明

  • 子查询通过联合查询将主步骤、子步骤数据汇总到同一个结果集,同时给子步骤关联绑定所属主步骤的StepOrder作为全局分组的排序依据
  • 自定义sort_priority字段:主步骤赋值为1,子步骤赋值为2,保证同组内主步骤永远排在子步骤前面
  • 最终排序规则:优先按主步骤的StepOrder全局升序,保证主步骤按顺序出现;同组内先主后子;子步骤内部按自身的SubStepOrder升序排列
    用你提供的示例数据执行上述SQL,输出结果和你期望的完全一致。

内容的提问来源于stack exchange,提问作者jerry-seinfeld

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:54:04