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

如何编写SQL查询获取指定父文章的所有子文章?

文章层级查询解决方案

没问题,我来帮你搞定这两个查询需求,分情况给你详细说明:

1. 仅查询指定父文章的所有直接子文章

如果只需要获取隶属于article_id=61的直接子文章,直接完善你的SQL语句即可,非常简单:

SELECT a.article_id, a.title 
FROM article a 
WHERE a.parent_article_id = 61;

这个语句通过筛选parent_article_id等于目标父文章ID(这里是61)的记录,就能精准得到所有直接关联的子文章。

2. 查询父文章及其所有子文章(支持两种场景)

如果需要同时返回父文章本身和它的子文章,分两种场景处理:

场景A:仅包含父文章和直接子文章

如果你的文章只有一级嵌套(子文章没有自己的子节点),可以用UNION ALL合并两个查询结果:

-- 先查询父文章本身
SELECT article_id, title 
FROM article 
WHERE article_id = 61
UNION ALL
-- 再查询它的直接子文章
SELECT a.article_id, a.title 
FROM article a 
WHERE a.parent_article_id = 61;

用UNION ALL而不是UNION的原因是,它不会去重(这里父文章和子文章ID不会重复),执行效率更高。

场景B:包含父文章和所有多级子文章(递归查询)

如果你的文章存在多层嵌套(比如子文章还有自己的子文章),就需要用到递归CTE(公共表表达式),主流数据库(MySQL 8.0+、PostgreSQL、SQL Server等)都支持这种语法:

WITH RECURSIVE article_tree AS (
    -- 递归起点:先获取目标父文章
    SELECT article_id, parent_article_id, title 
    FROM article 
    WHERE article_id = 61
    UNION ALL
    -- 递归步骤:迭代查询每一级的子文章,关联到上一级节点
    SELECT a.article_id, a.parent_article_id, a.title 
    FROM article a
    JOIN article_tree at ON a.parent_article_id = at.article_id
)
-- 最终返回完整的文章树(父节点+所有层级子节点)
SELECT article_id, title 
FROM article_tree;

这个查询会从指定的父文章开始,逐层往下遍历所有子节点,直到没有更多嵌套的子文章为止,返回整个文章层级结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:25:03