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

如何验证企业层级结构仅存在两级?

企业层级数据表
公司名称Parent_IDCompany_ID
ABCNULL1
ABC子公司12
ABC子公司213
ABC子公司314
ABC子公司415
DEFNULL6
DEF子公司67
DEF子公司268
DEF子公司369
GHINULL10
GHI子公司1011

已知层级规则

  • 父公司的Parent_ID为NULL
  • 子公司的Parent_ID等于对应父公司的Company_ID

示例:ABC公司的Parent_ID为NULL,属于父公司;所有ABC子公司的Parent_ID均为1,即ABC的Company_ID

需求

验证该层级结构仅存在两级,确认不存在隶属于其他子公司的子公司(即没有子公司的父级为非父公司)。

现有尝试的SQL语句

之前尝试的语句只能查出所有父公司,无法验证层级深度:

select * from table1 where Parent_ID is null

解决方案

要验证是否存在三级及以上层级,核心是检查是否有公司的Parent_ID对应的Company_ID本身是子公司(即该Parent_ID对应的公司的Parent_ID不为NULL)。

方法1:查询违规数据

通过关联查询直接找出所有父级为子公司的记录(这类记录的存在意味着层级超过两级):

select child.*
from table1 child
join table1 parent on child.Parent_ID = parent.Company_ID
where parent.Parent_ID is not null;

如果查询返回0条结果,说明结构仅为两级;若有返回结果,则存在三级及以上层级。

方法2:直接返回验证结论

通过子查询直接输出验证结果,无需手动判断行数:

select case 
         when exists (
           select 1 
           from table1 child
           where exists (
             select 1 
             from table1 parent
             where child.Parent_ID = parent.Company_ID
               and parent.Parent_ID is not null
           )
         ) then '存在三级及以上层级'
         else '仅存在两级层级'
       end as 层级验证结果;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:40:23