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

如何从两张关联表中获取指定ParentQuestionID的所有子级数据?

解决层级问答数据的子级查询问题

我来帮你搞定这个层级问答数据的查询问题!首先咱们先把表名明确下(你没给,我先假设两个合理的名字方便写SQL):

第一张表存储父问题与答案的关联,命名为ParentQuestion_Answer,结构如下:

ID | Parent_Question_ID | AnswerID

第二张表存储答案与子问题的关联,命名为Answer_SubQuestion,结构如下:

ID | AnswerID | Sub_Question_ID

根据你描述的层级关系——父问题对应多个答案,每个答案对应多个子问题,子问题又可以作为父问题继续关联答案和下一级子问题——最适合的方案是用**递归CTE(公共表表达式)**来实现全层级子数据的查询。

方案1:查询所有层级的子级数据(含多层嵌套)

如果需要获取指定父问题下的所有层级子数据(比如子问题的子问题也需要返回),可以用递归CTE:

WITH RecursiveQuestionHierarchy AS (
    -- 锚点成员:获取目标父问题的直接子级
    SELECT
        pqa.Parent_Question_ID AS Current_Question_ID,
        pqa.AnswerID,
        asq.Sub_Question_ID AS Child_Question_ID,
        1 AS Hierarchy_Level -- 标记当前是第几层子级,1为直接子级
    FROM ParentQuestion_Answer pqa
    LEFT JOIN Answer_SubQuestion asq ON pqa.AnswerID = asq.AnswerID
    WHERE pqa.Parent_Question_ID = @TargetParentID -- 替换成你要查询的ParentQuestionID

    UNION ALL

    -- 递归成员:迭代查询子问题的下一级子级
    SELECT
        rqh.Child_Question_ID AS Current_Question_ID,
        pqa.AnswerID,
        asq.Sub_Question_ID AS Child_Question_ID,
        rqh.Hierarchy_Level + 1 AS Hierarchy_Level
    FROM RecursiveQuestionHierarchy rqh
    JOIN ParentQuestion_Answer pqa ON rqh.Child_Question_ID = pqa.Parent_Question_ID
    LEFT JOIN Answer_SubQuestion asq ON pqa.AnswerID = asq.AnswerID
    WHERE rqh.Child_Question_ID IS NOT NULL -- 只处理存在子问题的节点
)
-- 输出所有层级的子数据
SELECT * FROM RecursiveQuestionHierarchy;

代码说明:

  • 锚点部分先定位到目标父问题关联的所有答案,再关联到对应的子问题,得到第一层子级数据。
  • 递归部分把上一层的子问题当作新的父问题,重复执行查询逻辑,直到没有更深层级的子问题为止。
  • Hierarchy_Level字段可以帮你区分当前数据属于第几层,方便后续业务处理。

方案2:仅查询直接子级数据

如果只需要目标父问题的直接子问题(不需要嵌套的下一级),直接关联两张表即可,不需要递归:

SELECT
    pqa.Parent_Question_ID,
    pqa.AnswerID,
    asq.Sub_Question_ID
FROM ParentQuestion_Answer pqa
LEFT JOIN Answer_SubQuestion asq ON pqa.AnswerID = asq.AnswerID
WHERE pqa.Parent_Question_ID = @TargetParentID;

额外优化建议

  • 确保AnswerID在两张表上都创建了索引,这样关联查询的性能会大幅提升。
  • 如果你的数据库不支持CTE(比如MySQL 5.7及以前版本),可以用存储过程配合循环来实现递归逻辑,但CTE是最简洁易维护的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:37:18