[MySQL/MariaDB] 트리메뉴 WITH RECURSIVE로 정렬하기
💡 핵심 요약 (TL;DR)
트리메뉴 WITH RECURSIVE로 정렬하기의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다. 핵심 설정과 구현 코드를 단계별로 파악하여 상황에 맞게 유연하게 활용할 수 있다.
트리구조의 메뉴를 select하는 과정에서 1뎁스가 10개가 넘어가니 문제가 발생했다.
문제
- 기존코드
1 | SELECT SITEMENUID, PARENTID, SEQ, FULLSEQ |
1번 다음에 2번이 와야하는데 VARCHAR라서 1다음에 10이 와버렸다.
- 콘솔
1 | <1뎁스-2뎁스-3뎁스> |
LPAD로 해결
팀장님이 자리수를 맞추면 해결되는 문제라고 알려주셨다.
- LPAD추가된 코드
1 | SELECT SITEMENUID, PARENTID, SEQ, FULLSEQ |
- 콘솔
1 | <1뎁스-2뎁스-3뎁스> |
원하는대로 잘 출력!!!
더나은 방법: with recursive
팀장님께서 LPAD 대신 with recursive를 써서 쿼리를 더 간단하게 만들수있다고 알려주셨다.
1 | with recursive menuTree as ( |
와 역시 팀장님 최고다…
참고
- 팀장님 지식
- WITH RECURSIVE 초간단 설명
[MySQL/MariaDB] 트리메뉴 WITH RECURSIVE로 정렬하기
https://sowon-dev.github.io/2023/08/21/230822withrecursive-treemenu/