sql >> Database >  >> RDS >> Mysql

Krijg het wortelpad van een boom met pure MySQL

Ik denk dat opgeslagen procedures zouden kunnen werken:

DELIMITER $$

DROP PROCEDURE IF EXISTS get_root;
CREATE PROCEDURE get_root(
   IN parentID INT,
   OUT rootID INT
)

BEGIN   
    SELECT parent_id FROM tree WHERE id = parentID INTO rootID;

    IF rootID = 0
        THEN SET rootID = parentID;
    ELSE
        CALL get_root(rootID, rootID);
    END IF;

END$$
DELIMITER ;

SET @@GLOBAL.max_sp_recursion_depth = 255;
SET @@session.max_sp_recursion_depth = 255; 

CALL get_root(4, @rootID);
SELECT @rootID;



  1. Foutbericht 7325 in SQL Server oplossen:"Objecten die kolommen met CLR-typen weergeven, zijn niet toegestaan ​​in gedistribueerde query's"

  2. SQLSTATE [HY093]:Ongeldig parameternummer:parameter is niet gedefinieerd

  3. Hoe de alfanumerieke waarde automatisch te verhogen in postgresql?

  4. Wat zijn de verschillen tussen Null, Zero en Blank in SQL?