카테고리 없음

[SQL] : WITH ~ AS ~

열하나요 2024. 2. 5. 18:21

참고1. WITH절과 서브쿼리의 차이점

예시 => UNION ALL

 

https://jieeeeez.tistory.com/100

 

[Oracle] 임시테이블 만들기 / WITH절

WITH절 WITH 절은 RDBMS계의 3대장인 Oracle, MySQL, MS-SQL 에서 기본적으로 지원된다. 오라클에서는 오라클9 이후 버전부터 사용이 가능하다. WITH절을 이용하여 미리 이름을 부여해서 Query Block을 만든다.

jieeeeez.tistory.com

 

참고2. 성능 관련

https://schatz37.tistory.com/46

 

[SQL] with 절을 효율적으로 사용하기

요즘 회사에서 '어떻게 하면 보다 효율적인 sql을 작성할 수 있을까?' 라는 부분에 굉장히 많이 고민하고 있는데요. 이번 포스팅에서는 공부가 필요하다고 생각되는 with절에 대해서 포스팅하려

schatz37.tistory.com

 

 

참고3. START WITH ~ CONNECT BY, LEVEL

https://grandma-coding.tistory.com/entry/Oracle-%EA%B3%84%EC%B8%B5%ED%98%95-%EC%BF%BC%EB%A6%AC-%EC%89%AC%EC%9A%B4-%EC%A0%95%EB%A6%ACSTART-WITH-CONNECT-BY

 

[Oracle] 계층형 쿼리 쉬운 정리(START WITH CONNECT BY)

오라클 사용 시 계층형 쿼리를 종종 사용하게 된다. LEVEL 어쩌구 CONNECT BY 어쩌구.. 처음 마주하면 굉장히 복잡하고 어려워보인다..... 몰라서 검색해봐도 무슨 말인지 이해하기 어려운 설명들이

grandma-coding.tistory.com

 

 

 

SELECT LEVEL, A.* FROM TB_DIVISION A
START WITH HIGH_DVSID IS NULL
CONNECT BY PRIOR DIVISIONID = HIGH_DVSID;

 

HIGH_DVSID가 NULL인 것부터 시작.

HIGH_DVSID가 NULL인 행의 DIVISIONID와 HIGH_DVSID가 일치하는 행을 찾아서 이동

일치하는 행이 있다면 그 행의 DIVISIONID와 HIGH_DVSID가 일치하는 행을 찾아서 이동

여러개라면 처음 일치하는 행 출력 후 계속 하위 요소 출력...

출력 중에 일치하는 값이 사라지면 다시 원래 위치로 와서 또 다시 찾음

모두 일치하는 행을 찾지 못하면 출력 끝

(예시를 보는 것이 빠름)