Mysql 계층 구조에서 자식 or 부모 노드 한방 쿼리(Oracle Connect By 흉내내기)
오랜만에 포스팅입니다 ㅠ.ㅠ Oracle에서는 Connect by로 쉽게 해결되는데 Mysql에서는 고생하시는 분 많으 실것 같아서 올립니다
Mysql 계층 구조 (Tree 구조)에서
테이블 구조가 아래와 같은 경우
ID | PARENT_ID | ETC |
1 | 0 | ROOT |
2 | 1 | CHILD |
3 | 2 | CHILD OF 2 |
4 | 2 | CHILD OF 2 |
5 | 2 | CHILD OF 2 |
Depth가 깊어 질수록 부모노드를 찾기가 힘들어 진다 . 이럴 경우 특정 자식 노드에서 Root까지의 부모노드를 가져오고 싶은 경우 아래의 쿼리를 사용하면 쉽게 해결된다.
SELECT @r as _ID,
(
SELECT @r := PARENT_ID FROM TABLE WHERE ID = _ID
) AS _PARENT_ID, @l := @l + 1 AS level
FROM (
SELECT @r := 5
) vars, TABLE h
WHERE @r <> 0
)A, TABLE B
결과
_ID | PARENT_ID | LEVEL |
1 | 0 | 1 |
2 | 1 | 2 |
5 | 2 | 3 |
'IT노트 > MYSQL' 카테고리의 다른 글
MySQL 백업 및 복원 (0) | 2015.03.18 |
---|---|
Unblock with 'mysqladmin flush-hosts' 에러시 (0) | 2015.03.17 |
Mysql Character Set 변경 관련 (0) | 2015.03.14 |
mysql 명령어로 접속시도시 발생되는 오류 (0) | 2015.03.12 |
[mysql] function 정보 (0) | 2015.03.12 |