1

可能重复:
Mysql 递归?

我正在尝试在单个查询中从子 ID 获取完整的父信息。可能吗?

例子 :

    id  |  ts_name  |  parent_id
    1  |  admin  |  0
    2  |  user  |  0
    3  |  card  |  0
    4  |  pin  |  0
    5  |  venkat  |  0
    7  |  admin_sub  |  1
    18  |  admin_sub2  |  7
    19  |  admin_sub2.1  |  18
    23  |  admin_sub1  |  7
    27  |  admin_sub3  |  7
    30  |  ghgfh  |  26
    37  |  vbnvbn  |  7
    38  |  add_sub_1  |  1
    41  |  admin_sub2.2.1  |  19
    42  |  admin_sub2.1.1.1  |  20
    43  |  admin_sub2.1.1.1  |  19

所以我想要得到的是

当我给孩子 id = 19 它应该返回:18,7,1

怎么做?

4

2 回答 2

1

您需要在 sql server (http://en.wikipedia.org/wiki/PL/SQL) 上用 plsql 语言创建一个函数,我不太了解语法,但总体算法如下所示:

function getParents(id):
    returns varchar(1000);
    IS result varchar(1000);
    begin
        while (id ! = 0)
            id = getParent(id);
            result = id + ', ';

        removeLastComma(result);
        return result;
    end

function getParent(parent):
    returns varchar(20);
    IS result varchar(20)
    begin
        select id into result from example_table where parent_id = parent
        return result
    end

removeLastComma(string):
     // cut last two characters of the string
     // return processed string

pl/sql 教程: http: //plsql-tutorial.com/plsql-functions.htm

可能它不能用作复制粘贴解决方案,但我希望它会成为一个有用的入门者。

于 2012-07-05T13:42:14.203 回答
0

不幸的是,如果不更改表结构或执行大量查询,则无法在 MySQL 中完成此操作。

https://stackoverflow.com/a/4345944/574303

于 2012-07-05T13:30:29.230 回答