使用MySQL,我想从具有此类字段结构的表中返回父母列表。ID,PARENTID,NAME(标准的父子层次结构)。我想遍历树以返回所有“父母”的列表。
我意识到“嵌套集”可能是处理此问题的更好方法-但目前我无法更改数据的结构。我将来会希望这样做。当前-我的数据集实际上将包含一些深度级别- 没什么疯狂的……也许2-5,所以我的递归命中不应太“昂贵”。
我已经看过SQL Server获取父级列表中提出的解决方案-但这是mySQL中的语法炸弹…
有没有人举过一个例子?
@kevin-链接的thx-但我仍然收到错误。(“每个派生表必须具有它自己的别名”)
这就是我所做的(上面文章的语法修改形式-为了适应MySQL)-我显然错过了一些东西…
SELECT parents.* FROM ( SELECT taskID, task, parentID, 0 as level FROM tasks WHERE taskidID = 9147 UNION ALL SELECT taskID, task, parentID, Level + 1 FROM tasks WHERE taskID = (SELECT parentID FROM parents ORDER BY level DESC LIMIT 1) )
想法???
例:
ID PARENTID NAME 9146 0 thing1 9147 0 thing2 9148 9146 thing3 9149 9148 thing4 9150 0 thing5 9151 9149 thing6
查询“ thing3”的父级返回“ 9148,9146”
查询“ thing6”的父级返回“ 9149,9148,9146,0”
在此示例中,我们正在检查5个级别:
select t1.parentid, t2.parentid, t3.parentid, t4.parentid, t5.parentid from tableName t1 left join tableName t2 on t1.parentid = t2.id left join tableName t3 on t2.parentid = t3.id left join tableName t4 on t3.parentid = t4.id left join tableName t5 on t4.parentid = t5.id where t1.name = 'thing3'