如何通过子查询或自关联查询获取层级表的父节点名称结果
层级表关联查询修复方案
问题原因
你原有SQL的自连接逻辑本身是正确的,未得到预期结果的核心问题是table是SQL的保留关键字,直接作为表名使用会触发语法错误,需替换为你实际的业务表名;如果你的表名确实设置为table,需要用反引号包裹避免语法冲突。
调整后自连接实现
select a.ID, a.LOCATION, b.LOCATION as PARENT_NAME, a.PARENTID from 替换为你的实际表名 as a left join 替换为你的实际表名 as b on a.PARENTID = b.ID
该语句执行后,PARENTID为0的根节点因为没有匹配的父ID记录,b.LOCATION会自动返回NULL,完全匹配你需要的输出格式。
子查询实现方案
如果需要用子查询实现,可使用以下语句:
select ID, LOCATION, (select LOCATION from 替换为你的实际表名 b where b.ID = a.PARENTID) as PARENT_NAME, PARENTID from 替换为你的实际表名 a
内容的提问来源于stack exchange,提问作者Nikolas
相关产品推荐
相关产品推荐

