mysql recursive(tree) parent child category

后端 未结 1 587
暖寄归人
暖寄归人 2020-12-09 00:41

I am new in mysql. This is my table:

category table:

id | name        | prent
----------------------------
1  |  os         | null
2  | linux       |         


        
相关标签:
1条回答
  • 2020-12-09 01:20

    This Thread led me. Thanks to @RolandoMySQLDBA

    DELIMITER $$
    DROP FUNCTION IF EXISTS `GetAncestry` $$
    CREATE FUNCTION `GetAncestry` (GivenID INT) RETURNS VARCHAR(1024)
    DETERMINISTIC
    BEGIN
        DECLARE rv VARCHAR(1024);
        DECLARE cm CHAR(1);
        DECLARE ch INT;
    
        SET rv = '';
        SET cm = '';
        SET ch = GivenID;
        WHILE ch > 0 DO
            SELECT IFNULL(`prent`,-1) INTO ch FROM
            (SELECT `prent` FROM Table1 WHERE id = ch) A;
            IF ch > 0 THEN
                SET rv = CONCAT(rv,cm,ch);
                SET cm = ',';
            END IF;
        END WHILE;
        RETURN rv;
    
    END $$
    DELIMITER ;
    

    A working fiddle here.

    SELECT id,GetAncestry(id) as parents from Table1 where id = 7;
    
    ID  PARENTS
    7   6,3,2,1
    
    0 讨论(0)
提交回复
热议问题