문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
기술문서:레퍼런스:쿼리:응용:recursive_query [2025/04/28 19:53] carlito76 |
기술문서:레퍼런스:쿼리:응용:recursive_query [2026/06/19 10:52] (현재) carlito76 |
||
|---|---|---|---|
| 줄 7: | 줄 7: | ||
| <note tip> | <note tip> | ||
| - | 최소 지원 버전은 약간의 차이가 있을 수 있습니다. | + | 최소 지원 버전은 약간의 차이가 있을 수 있습니다.\\ |
| + | - MySQL/ | ||
| + | - MSSQL, Oracle/ | ||
| </ | </ | ||
| - | ^ | + | ===== 테이블 명세 ===== |
| - | | 코드ID | cd_id | 문자형 | PK | | + | ^ |
| - | | 코드명 | cd_nm | 문자형 | | | + | | 코드ID | cd_id | 문자형 |
| - | | 부모 코드ID | parent_cd_id | 문자형 | | | + | | 코드명 | cd_nm | 문자형 |
| - | | 정렬 순서 | sort_order | 숫자형 | | | + | | 부모 코드ID | parent_cd_id | 문자형 |
| + | | 정렬 순서 | sort_order | 숫자형 | ||
| + | ===== SQL 스크립트 ===== | ||
| <sxh sql; gutter: true; title: DDL;> | <sxh sql; gutter: true; title: DDL;> | ||
| - | -- MySQL/ | ||
| CREATE TABLE ex_recursive ( | CREATE TABLE ex_recursive ( | ||
| cd_id VARCHAR(100) NOT NULL PRIMARY KEY, | cd_id VARCHAR(100) NOT NULL PRIMARY KEY, | ||
| cd_nm VARCHAR(100) NOT NULL, | cd_nm VARCHAR(100) NOT NULL, | ||
| parent_cd_id VARCHAR(100), | parent_cd_id VARCHAR(100), | ||
| - | sort_order | + | sort_order |
| - | ); | + | |
| - | + | ||
| - | -- Oracle/ | + | |
| - | CREATE TABLE ex_recursive ( | + | |
| - | cd_id VARCHAR(100) NOT NULL PRIMARY KEY, | + | |
| - | cd_nm VARCHAR(100) NOT NULL, | + | |
| - | parent_cd_id VARCHAR(100), | + | |
| - | sort_order NUMBER | + | |
| ); | ); | ||
| </ | </ | ||
| 줄 60: | 줄 55: | ||
| ===== MySQL/ | ===== MySQL/ | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- MySQL 8.0 이상/ | + | /* |
| + | MySQL 8.0.1 이상/ | ||
| + | */ | ||
| WITH RECURSIVE tree (cd_id, cd_nm, parent_cd_id, | WITH RECURSIVE tree (cd_id, cd_nm, parent_cd_id, | ||
| SELECT | SELECT | ||
| 줄 90: | 줄 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 |
| ) | ) | ||
| SELECT | SELECT | ||
| 줄 103: | 줄 100: | ||
| ===== MSSQL ===== | ===== MSSQL ===== | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- MSSQL 2005 이상 | + | /* |
| + | MSSQL 2005 이상 | ||
| + | */ | ||
| WITH tree (cd_id, cd_nm, parent_cd_id, | WITH tree (cd_id, cd_nm, parent_cd_id, | ||
| SELECT | SELECT | ||
| 줄 133: | 줄 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 |
| ) | ) | ||
| SELECT | SELECT | ||
| 줄 145: | 줄 144: | ||
| ===== Oracle/ | ===== Oracle/ | ||
| - | <sxh sql; gutter: true; highlight: [15, 88];> | + | <sxh sql; gutter: true; highlight: [16, 92];> |
| - | -- Oracle 9i 이상 | + | /* |
| - | -- Tibero 3 이상 | + | Oracle 9i 이상/Tibero 3 이상 |
| + | */ | ||
| SELECT | SELECT | ||
| cd_id | cd_id | ||
| 줄 166: | 줄 166: | ||
| ; | ; | ||
| - | -- Oracle 11g 이상 | + | /* |
| - | -- Tibero 3 이상 | + | Oracle 11g 이상/Tibero 3 이상 |
| + | */ | ||
| WITH tree (cd_id, cd_nm, parent_cd_id, | WITH tree (cd_id, cd_nm, parent_cd_id, | ||
| SELECT | SELECT | ||
| 줄 197: | 줄 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 |
| ) | ) | ||
| SELECT | SELECT | ||
| 줄 207: | 줄 208: | ||
| ; | ; | ||
| - | -- Oracle 12c 이상 | + | /* |
| + | Oracle 12c 이상 | ||
| + | */ | ||
| WITH tree (cd_id, cd_nm, parent_cd_id, | WITH tree (cd_id, cd_nm, parent_cd_id, | ||
| SELECT | SELECT | ||
| 줄 231: | 줄 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 |
| ) | ) | ||
| SEARCH DEPTH FIRST BY sort_order SET seq | SEARCH DEPTH FIRST BY sort_order SET seq | ||
| 줄 244: | 줄 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, | WITH RECURSIVE tree (cd_id, cd_nm, parent_cd_id, | ||
| SELECT | SELECT | ||
| 줄 271: | 줄 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 |
| ) | ) | ||
| SELECT | SELECT | ||
| 줄 281: | 줄 286: | ||
| ; | ; | ||
| - | -- PostgreSQL 14 이상 | + | /* |
| + | PostgreSQL 14 이상 | ||
| + | */ | ||
| WITH RECURSIVE tree (cd_id, cd_nm, parent_cd_id, | WITH RECURSIVE tree (cd_id, cd_nm, parent_cd_id, | ||
| SELECT | SELECT | ||
| 줄 305: | 줄 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 |
| ) | ) | ||
| SEARCH DEPTH FIRST BY sort_order SET seq | SEARCH DEPTH FIRST BY sort_order SET seq | ||
| 줄 316: | 줄 323: | ||
| ; | ; | ||
| </ | </ | ||
| + | |||
| + | {{tag>" | ||