이번에는 계층 테이블에 대한 페이징 쿼리 문제가 있습니다.페이징 계층 쿼리에 대한 Oracle_ROW_NUMBER
그래서 샘플 데이터에 대해 내가 가진 :table_name (id varchar2 (50), id_parent varchar2 (50));
WITH table_name AS
(
SELECT '3' id, '' id_parent FROM DUAL UNION ALL
SELECT '5' id, '3' id_parent FROM DUAL UNION ALL
SELECT 's' id, '3' id_parent FROM DUAL UNION ALL
SELECT '4' id, 'as' id_parent FROM DUAL UNION ALL
SELECT 'aa' id, 'as' id_parent FROM DUAL UNION ALL
SELECT 'as' id, '3' id_parent FROM DUAL UNION ALL
SELECT 'ad' id, '3' id_parent FROM DUAL UNION ALL
SELECT '2' id, '' id_parent FROM DUAL
)
SELECT LPAD('-', 2 * (level - 1), '-') || id AS id1,
id_parent,
rownum --Seem not legit here
FROM table_name
START WITH id_parent IS NULL
CONNECT BY PRIOR id = id_parent
--ORDER SIBLINGS BY id
;
이 예상되는 출력 :
id id_parent rownum
2 1
3 2
--5 3 3
--ad 3 4
--as 3 5
----4 as 6
----aa as 7
--s 3 8
을 지금은 ROW_NUMBER 페이징을위한 ROWNUM에 의지하십시오. 오라클 계층 쿼리의 의사로서, 이것은 선주문 Traveral을 우리가 원하는대로 표시 할 수 있는지 확인합니다. 그러나 일반적으로 SQL과 마찬가지로 IMO는 동일한 레벨 노드가 정렬 될 것임을 보장하지 않습니다.).
그래서 ROW_NUMBER() OVER (ORDER SIBLINGS BY id)
과 같은 것이 필요합니다. 하지만 나는 그런 것을 찾기 위해 운이 없다.
이 작업을 수행 할 수있는 방법이 있습니까?
arr, 감사합니다. MTO, 'rownum'에 대한 내 지식이 부족합니다. 답변을 읽은 후 필자는이 유용한 링크를 검색하여 발견했습니다 [Top-n 및 페이지 매기기 쿼리] (http://www.oracle.com/technetwork/issue-archive/2007/07-jan/o17asktom-093877.html)) (비록 내가 asktom "__"어딘가에서 한 번 읽었지만, –