사용자 도구

사이트 도구


기술문서:레퍼런스:쿼리:응용:recursive_query

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
기술문서:레퍼런스:쿼리:응용:recursive_query [2025/08/12 11:03]
carlito76
기술문서:레퍼런스:쿼리:응용:recursive_query [2026/06/19 10:52] (현재)
carlito76
줄 7: 줄 7:
  
 <note tip> <note tip>
-최소 지원 버전은 약간의 차이가 있을 수 있습니다.+최소 지원 버전은 약간의 차이가 있을 수 있습니다.\\ 
 +- MySQL/MariaDB, PostgreSQL: 세부 버전까지 표시\\ 
 +- MSSQL, Oracle/Tibero: 제품 버전까지 표시
 </note> </note>
  
-^  물리명  ^  논리명  ^  타입  ^  KEY  ^ +===== 테이블 명세 ===== 
-| 코드ID | cd_id | 문자형 | PK | +^  논리명  ^  물리명  ^  타입  ^  길이  ^  KEY  ^ 
-| 코드명 | cd_nm | 문자형 | | +| 코드ID | cd_id | 문자형 | 100 | PK | 
-| 부모 코드ID | parent_cd_id | 문자형 | | +| 코드명 | cd_nm | 문자형 | 100 | | 
-| 정렬 순서 | sort_order | 숫자형 | |+| 부모 코드ID | parent_cd_id | 문자형 | 100 | | 
 +| 정렬 순서 | sort_order | 숫자형 | | |
  
 +===== SQL 스크립트 =====
 <sxh sql; gutter: true; title: DDL;> <sxh sql; gutter: true; title: DDL;>
 CREATE TABLE ex_recursive ( CREATE TABLE ex_recursive (
줄 51: 줄 55:
 ===== MySQL/MariaDB ===== ===== MySQL/MariaDB =====
 <sxh sql; gutter: true;> <sxh sql; gutter: true;>
--- MySQL 8.0 이상/MariaDB 10.2.2 이상+/* 
 + MySQL 8.0.1 이상/MariaDB 10.2.2 이상 
 +*/
 WITH RECURSIVE tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth, seq) AS ( WITH RECURSIVE tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth, seq) AS (
  SELECT  SELECT
줄 81: 줄 87:
  ex_recursive a  ex_recursive a
  INNER JOIN tree b  INNER JOIN tree b
- ON a.parent_cd_id = b.cd_id+ ON b.cd_id = a.parent_cd_id
 ) )
 SELECT SELECT
줄 94: 줄 100:
 ===== MSSQL ===== ===== MSSQL =====
 <sxh sql; gutter: true;> <sxh sql; gutter: true;>
--- MSSQL 2005 이상+/* 
 + MSSQL 2005 이상 
 +*/
 WITH tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth, seq) AS ( WITH tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth, seq) AS (
  SELECT  SELECT
줄 124: 줄 132:
  ex_recursive a  ex_recursive a
  INNER JOIN tree b  INNER JOIN tree b
- ON a.parent_cd_id = b.cd_id+ ON b.cd_id = a.parent_cd_id
 ) )
 SELECT SELECT
줄 136: 줄 144:
  
 ===== Oracle/Tibero ===== ===== Oracle/Tibero =====
-<sxh sql; gutter: true; highlight: [14, 86];> +<sxh sql; gutter: true; highlight: [16, 92];> 
--- Oracle 9i 이상/Tibero 3 이상+/* 
 + Oracle 9i 이상/Tibero 3 이상 
 +*/
 SELECT SELECT
  cd_id  cd_id
줄 156: 줄 166:
 ; ;
  
--- Oracle 11g 이상/Tibero 3 이상+/* 
 + Oracle 11g 이상/Tibero 3 이상 
 +*/
 WITH tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth, seq) AS ( WITH tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth, seq) AS (
  SELECT  SELECT
줄 186: 줄 198:
  ex_recursive a  ex_recursive a
  INNER JOIN tree b  INNER JOIN tree b
- ON a.parent_cd_id = b.cd_id+ ON b.cd_id = a.parent_cd_id
 ) )
 SELECT SELECT
줄 196: 줄 208:
 ; ;
  
--- Oracle 12c 이상+/* 
 + Oracle 12c 이상 
 +*/
 WITH tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth) AS ( WITH tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth) AS (
  SELECT  SELECT
줄 220: 줄 234:
  ex_recursive a  ex_recursive a
  INNER JOIN tree b  INNER JOIN tree b
- ON a.parent_cd_id = b.cd_id+ ON b.cd_id = a.parent_cd_id
 ) )
 SEARCH DEPTH FIRST BY sort_order SET seq SEARCH DEPTH FIRST BY sort_order SET seq
줄 233: 줄 247:
  
 ===== PostgreSQL ===== ===== PostgreSQL =====
-<sxh sql; gutter: true; highlight: [63];> +<sxh sql; gutter: true; highlight: [67];> 
--- PostgreSQL 8.4 이상+/* 
 + PostgreSQL 8.4 이상 
 +*/
 WITH RECURSIVE tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth, seq) AS ( WITH RECURSIVE tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth, seq) AS (
  SELECT  SELECT
줄 260: 줄 276:
  ex_recursive a  ex_recursive a
  INNER JOIN tree b  INNER JOIN tree b
- ON a.parent_cd_id = b.cd_id+ ON b.cd_id = a.parent_cd_id
 ) )
 SELECT SELECT
줄 270: 줄 286:
 ; ;
  
--- PostgreSQL 14 이상+/* 
 + PostgreSQL 14 이상 
 +*/
 WITH RECURSIVE tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth) AS ( WITH RECURSIVE tree (cd_id, cd_nm, parent_cd_id, sort_order, cd_lvl, cd_nm_depth) AS (
  SELECT  SELECT
줄 294: 줄 312:
  ex_recursive a  ex_recursive a
  INNER JOIN tree b  INNER JOIN tree b
- ON a.parent_cd_id = b.cd_id+ ON b.cd_id = a.parent_cd_id
 ) )
 SEARCH DEPTH FIRST BY sort_order SET seq SEARCH DEPTH FIRST BY sort_order SET seq
줄 305: 줄 323:
 ; ;
 </sxh> </sxh>
 +
 +{{tag>"쿼리" "Query" "응용"}}