데이터베이스/SQL

[SQL] MySQL 하위에서 상위 찾기 (WITH RECURSIVE)

Reference M1 2021. 1. 15. 15:10

 

MENU_BAS라는 테이블에 MENU_ID, UPR_MENU_ID의 관계를 가지고 하위에서 상위까지 데이터를 조회하는 방법이다.

WHTH RECURSIVE를 통해 데이터를 조회하는 점을 기억하자.

WITH RECURSIVE MENU (MENU_ID, UPR_MENU_ID, MENU_NM, MENU_URL) AS (
    SELECT MENU_ID
         , UPR_MENU_ID
         , MENU_NM
         , MENU_URL
	  FROM MENU_BAS
	 WHERE MENU_ID = #{menuId}
       AND DEL_YN = 'N'
     UNION ALL
	SELECT R.MENU_ID
         , R.UPR_MENU_ID
         , R.MENU_NM
         , R.MENU_URL
	  FROM MENU_BAS R
	 INNER JOIN MENU
        ON R.MENU_ID = MENU.UPR_MENU_ID
	  AND DEL_YN = 'N'
)

SELECT MENU_ID
     , UPR_MENU_ID
     , MENU_NM
     , MENU_URL
  FROM MENU
 ORDER BY MENU_ID ASC;