mysql 계층쿼리 질문 0 3 1,239

by axelhoon [SQL Query] 계층쿼리 HIERARCHY [2022.01.06 15:20:22]


mysql 에서 계층쿼리를 구현할려고 구글링 하다 보니

대부분 아래 샘플로 많이 구현하는거 같은데 설명이 없어서 내용을 이해하기 어렵네요.

혹시 아래 함수의 계층 쿼리 작동 원리를 설명 부탁드려 봅니다.

 

CREATE FUNCTION hierarchy_connect_by_parent_eq_prior_id(value INT) RETURNS INT
NOT DETERMINISTIC
READS SQL DATA
BEGIN
        DECLARE _id INT;
        DECLARE _parent INT;
        DECLARE _next INT;
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET @id = NULL;
 
        SET _parent = @id;
        SET _id = -1;
 
        IF @id IS NULL THEN
                RETURN NULL;
        END IF;
 
        LOOP
                SELECT  MIN(id)
                INTO    @id
                FROM    t_hierarchy
                WHERE   parent = _parent
                        AND id > _id;
                IF @id IS NOT NULL OR _parent = @start_with THEN
                        SET @level = @level + 1;
                        RETURN @id;
                END IF;
                SET @level := @level - 1;
                SELECT  id, parent
                INTO    _id, _parent
                FROM    t_hierarchy
                WHERE   id = _parent;
        END LOOP;       
END

 

by 마농 [2022.01.06 15:30:44]

MySQL 8.0 이상이라면?
함수 없이 WITH RECURSIVE 구문으로 구현 가능합니다.


by axelhoon [2022.01.06 15:46:46]

아쉽게도 5.7 버전입니다.ㅠㅠ


by 마농 [2022.01.06 16:45:53]

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입