同一张表中有父子键关联进行查询
刚有网友提问,只有一张表,其中有子键与父键关联,怎样根扰子键查询到父键记录的数据?
Insus.NET尝试写了一个简单的例子,希望能看得懂。

CREATE TABLE [dbo].[tempTable] ( [id] INT , [parent_id] INT NULL, [itemName] NVARCHAR(40) ) GO INSERT INTO [dbo].[tempTable] ( [id], [parent_id], [itemName] ) VALUES (1,NULL,'a'), (2,NULL,'b'), (3,1,'c'), (4,NULL,'d'), (5,3,'e') GO SELECT [id],[parent_id],[itemName] FROM [dbo].[tempTable] GO
下面是表关联:

SELECT ta.[id] AS [子表id], tb.[id] AS [父表id], ta.[itemName] AS [子表name], tb.[itemName] AS [父表name] FROM [dbo].[tempTable] AS ta INNER JOIN [dbo].[tempTable] AS tb ON (ta.[parent_id] = tb.[id]) GO
后来网友提供数据,数据如下:

CREATE TABLE [dbo].[tempTable] ( [id] INT , [parent_id] INT NULL, [itemName] NVARCHAR(40) ) GO INSERT INTO [dbo].[tempTable] ( [id], [parent_id], [itemName] ) VALUES (1,0,'广东省'), (2,1,'广州市'), (3,2,'增城区'), (5,3,'小池镇'), (8,5,'XX村'), (9,5,'YY村'), (10,5,'ZZ村') GO SELECT [id],[parent_id],[itemName] FROM [dbo].[tempTable] GO
Insus.NET写的关联语句及查询语句:

SELECT ta.[id] AS [A-id], ta.[itemName] AS [A-name], tb.[id] AS [B-id], tb.[itemName] AS [B-name], tc.[id] AS [C-id], tc.[itemName] AS [C-name] , td.[id] AS [D-id], td.[itemName] AS [D-name] , te.[id] AS [E-id], te.[itemName] AS [E-name] FROM [dbo].[tempTable] AS te INNER JOIN [dbo].[tempTable] AS td ON (te.[parent_id] = td.[id]) INNER JOIN [dbo].[tempTable] AS tc ON (td.[parent_id] = tc.[id]) INNER JOIN [dbo].[tempTable] AS tb ON (tc.[parent_id] = tb.[id]) INNER JOIN [dbo].[tempTable] AS ta ON (tb.[parent_id] = ta.[id]) GO
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2017-05-17 表单验证(AngularJs)
2011-05-17 获取图片的宽度与高度
2011-05-17 如何使用Flash对象去显示图片