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

Select子查询编写求助:处理带ALL权限值的多表关联匹配需求

实现方案

核心思路

将三类不同的权限规则拆分为独立查询,通过UNION ALL合并后去重即可同时适配两个场景:

  • 普通权限条目(Dept_Code和Subject_Code都不为ALL)直接输出
  • 部门级全科目权限(Dept_Code不为ALL、Subject_Code为ALL)关联科目主表拉取对应部门的所有科目
  • 全局全量权限(Dept_Code为ALL且Subject_Code为ALL)直接拉取部门主表和科目主表的全量有效组合

完整SQL代码

SELECT DISTINCT Dept_Code, Subject_Code
FROM (
    -- 1. 处理普通非ALL权限条目
    SELECT Dept_Code, Subject_Code
    FROM `Department Access Info`
    WHERE Dept_Code != 'ALL' AND Subject_Code != 'ALL'

    UNION ALL

    -- 2. 处理单部门全科目权限(Dept非ALL、Subject为ALL)
    SELECT a.Dept_Code, s.Subject_Code
    FROM `Department Access Info` a
    JOIN `Subject Code Master Table` s ON a.Dept_Code = s.Dept_Code
    WHERE a.Dept_Code != 'ALL' AND a.Subject_Code = 'ALL'

    UNION ALL

    -- 3. 处理全局全量权限(Dept和Subject都为ALL)
    SELECT d.Dept_Code, s.Subject_Code
    FROM `Department Access Info` a
    CROSS JOIN `Dept_Code_Master` d
    JOIN `Subject Code Master Table` s ON d.Dept_Code = s.Dept_Code
    WHERE a.Dept_Code = 'ALL' AND a.Subject_Code = 'ALL'
) t
ORDER BY Dept_Code, Subject_Code

适配说明

  • 场景1无Dept_Code=ALL、Subject_Code=ALL的权限条目时,第三段查询无返回值,最终输出和场景1预期完全一致
  • 场景2新增全局全量权限条目后,第三段查询会返回所有部门在科目主表中对应的有效科目,自动补全104部门的dd1科目,符合场景2预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 18:24:03