我试图找到任何深度的特定领域的所有父母,祖父母等。例如,给定以下结构,如果我提供5,则返回的值应为1,2,3和4。
| a | b |
-----------
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |
| 4 | 5 |
| 3 | 6 |
| 4 | 7 |
我该怎么做?
答案 0 :(得分:24)
SELECT @id :=
(
SELECT senderid
FROM mytable
WHERE receiverid = @id
) AS person
FROM (
SELECT @id := 5
) vars
STRAIGHT_JOIN
mytable
WHERE @id IS NOT NULL
答案 1 :(得分:-5)
以下答案不是MYSQL,而是使用PHP。这个答案对于那些在搜索期间最终出现在这个页面上的人来说非常有用(就像我一样)但不仅限于使用MYSQL。
如果您的数据库具有未知深度的嵌套结构,则可以使用递归循环打印出内容:
function goDownALevel($parent){
$children = $parent->getChildren(); //underlying SQL function
if($children != null){
foreach($children as $child){
//Print the child content here
goDownALevel($child);
}
}
}
此功能也可以用Javascript等任何其他语言重写。