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

如何判断用户是否属于同一层级树或存在直接父子关系?

解决方案

一、判断两个用户是否存在直接父子关系

直接通过查询用户表的Parent_ID字段即可验证,无需递归。以下SQL可直接返回判断结果:

-- 替换其中的'USER_A'和'USER_B'为要验证的两个用户ID
SELECT CASE 
         WHEN EXISTS (SELECT 1 FROM user_table WHERE User_id = 'USER_B' AND Parent_ID = 'USER_A') THEN '是直接父子关系(USER_A是USER_B的父节点)'
         WHEN EXISTS (SELECT 1 FROM user_table WHERE User_id = 'USER_A' AND Parent_ID = 'USER_B') THEN '是直接父子关系(USER_B是USER_A的父节点)'
         ELSE '无直接父子关系'
       END AS 关系判断结果;

二、验证一组用户ID是否属于同一团队(同一树层级)

利用递归CTE向上追溯每个用户的根节点(即最顶层Parent_ID为空的节点),若所有用户的根节点一致,则属于同一团队。

示例SQL

-- 替换IN子句中的用户ID列表为需要验证的集合
WITH RECURSIVE user_hierarchy AS (
    -- 初始层:选中待验证的用户
    SELECT User_id, Parent_ID
    FROM user_table
    WHERE User_id IN ('2','3','4')
    UNION ALL
    -- 递归层:向上遍历父节点,直到父节点为空
    SELECT uh.User_id, ut.Parent_ID
    FROM user_hierarchy uh
    JOIN user_table ut ON uh.Parent_ID = ut.User_id
    WHERE ut.Parent_ID IS NOT NULL
)
-- 统计所有用户的根节点数量,判断是否一致
SELECT CASE 
         WHEN COUNT(DISTINCT root.root_id) = 1 THEN '同一团队'
         ELSE '非同一团队'
       END AS 团队验证结果
FROM (
    -- 获取每个用户对应的根节点ID
    SELECT uh.User_id, ut.User_id AS root_id
    FROM user_hierarchy uh
    JOIN user_table ut ON uh.Parent_ID = ut.User_id
    WHERE ut.Parent_ID IS NULL
) root;

结果说明

  • 输入[2,3,4]时,三个用户的根节点均为1,返回同一团队
  • 输入[2,3,7]时,2、3的根节点是1,7的根节点是6,根节点不唯一,返回非同一团队

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:35:16