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

如何通过SQL查询提取表中的嵌套层级关系

解决层级表父级名称替换的SQL方案

这其实是个很典型的**自连接(Self-Join)**场景,用简单的LEFT JOIN就能完美实现你的需求,我给你一步步拆解下怎么做:

1. 先确认表结构与测试数据

假设你的表名为YourTable,先把示例数据落地方便测试:

-- 创建示例表
CREATE TABLE YourTable (
    ID INT PRIMARY KEY,
    Name VARCHAR(50),
    ParentId INT NULL
);

-- 插入示例数据
INSERT INTO YourTable (ID, Name, ParentId)
VALUES 
(1, 'Root', NULL),
(2, 'Top', NULL),
(3, 'Sub1', 1),
(4, 'Sub2', 2);

2. 核心查询语句

用左连接关联表自身,把父级的Name字段映射过来:

SELECT 
    child.ID,
    child.Name,
    parent.Name AS ParentName
FROM YourTable child
LEFT JOIN YourTable parent ON child.ParentId = parent.ID;

3. 为什么用LEFT JOIN?

这里必须用LEFT JOIN而不是INNER JOIN:

  • 内连接会过滤掉ParentId为NULL的行(也就是Root和Top这两条根节点数据)
  • 左连接会保留所有子表的行,当没有匹配的父级时,ParentName会自动显示为NULL,完全符合你期望的结果格式。

执行结果

运行上面的查询后,会得到你想要的输出:

IDNameParentName
1RootNULL
2TopNULL
3Sub1Root
4Sub2Top

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:45:54