번호 제목
1 t1
2 t2
3 t1_1
4 t2_1
5 t1_1_1
-> num desc
번호 제목
4 t2_1
3 t1_1
2 t2
1 t1
-> 원하는 결과물
번호 제목
2 t2
4 --> t2_1
1 t1
3 --> t1_1
5 --> t1_1_1
-- num으로 해결 불가능
1. 개념
1) 원본글 : 질문글, 답글이 아닌 부모
2) 답글 : 답글
3) 부모글 : 답글의 부모
2. column
1) ref : 원본글 과 답글들을 그룹으로 묶는 역할
2) step : 그룹내에서 순서를 결정하는 역할
3) depth : 들여쓰기 횟수
3. 원본글 작성
1) ref : 자기자신의 글번호가 ref값이 됨
2) step : 0
3) depth : 0
4. 답글(댓글) 작성
1) ref : 부모글의 ref를 자기의 ref값이 됨
2) step
a. 테이블에서 ref가 부모의 ref와 같고 step이 부모의 step보다 큰것들(초과)을 각자의 step에 +1값 으로 업데이트
b. 부모글의 step에 +1 한값을 자기의 step값이 됨
3) depth : 부모글의 depth+1 를 자기의 depth 값이 됨
Ex
NUM TITLE REF STEP DEPTH
1 t1 1 0 0
2 t2 2 0 0
3 t1_1 1 4 1
4 t2_1 2 1 1
5 t1_2 1 2 1
6 t1_2_1 1 3 2
7 t1_3 1 1 1
-> 정렬 원하는 결과
NUM TITLE REF STEP DEPTH
2 t2 2 0 0
4 t2_1 2 1 1
1 t1 1 0 0
7 t1_3 1 1 1
5 t1_2 1 2 1
6 t1_2_1 1 3 2
3 t1_1 1 4 1
-> ORDER BY REF DESC
NUM TITLE REF STEP DEPTH
4 t2_1 2 1 1
2 t2 2 0 0
3 t1_1 1 4 1
1 t1 1 0 0
5 t1_2 1 3 1
6 t1_2_1 1 3 2
7 t1_3 1 1 1
-> ORDER BY REF DESC, step asc
NUM TITLE REF STEP DEPTH
2 t2 2 0 0
4 t2_1 2 1 1
1 t1 1 0 0
7 t1_3 1 1 1
5 t1_2 1 2 1
6 t1_2_1 1 3 2
3 t1_1 1 4 1