【发布时间】:2012-03-05 23:46:35
【问题描述】:
如何找到我所有项目的 parentId (mySQL)? (可能有无限多层次的层次结构......不是最好的设计,但它是我正在使用的)
ID PARENTID NAME
9146 NULL thing1
9147 NULL thing2
9148 9146 thing3
9149 9148 thing4
9150 NULL thing5
9151 9149 thing6
9152 9147 thing7
那么输出应该是:
ID REAL_PARENTID
9146 NULL (or self 9146)
9147 NULL (or self 9147)
9148 9146
9149 9146
9150 NULL (or self 9150)
9151 9146
9152 9147
【问题讨论】:
-
您需要上到顶层父级,还是层次结构中的上一级父级?没关系,我知道你需要登顶。
-
这个问题的答案:stackoverflow.com/questions/3704130/recursive-mysql-query应该对你有用。
-
你的例子不清楚。从发布的数据来看,您正在寻找的似乎是 just SELECT ID, PARENTID from table,仅此而已。有什么问题?
-
@Marc 不完全正确,请查看项目 ID 9149 和 9151。REAL_PARENTID 不同
-
@monkey-wrench 你能设计成当任何第一级子插入发生时,它会找到它的最后一个祖先并将其保存在
oldest parent列中吗?这样,对于任何后续子插入,您只需找到他们的直接父级并复制他们的oldest parent列。
标签: mysql sql recursive-query