connect by level 에 대해 0 2 1,367

by 민트에이드 [Oracle 기초] connect by level [2020.12.18 17:08:50]


안녕하세요. 

connect by level 은 거의 날짜를 만들때 dual을 이용해서 단순하게 사용해왔습니다.

최근 쿼리를 이리 저리 만들어보다가.. 얻게 된 결과가 잘 이해가 안 되어 질문드립니다. 

쉬운 질문일 수 있는데, 저는 그동안 connect by level을 이해를 못 하고 사용했네요.ㅠ

with t as (
select 'a' col from dual
union all select 'b' from dual
)

select level, col
from t
connect by level <= 2
order by level, col

이렇게 실행을 했는데, 저는 단순하게 

level col1

1      a

1      b

2      a

2      b

이렇게 나올 것이라 예상했는데,,

1      a

1      b

2      a

2      a

2      b

2      b

이런 결과가 나왔습니다. 

level 숫자가 커질 수록 배로 늘어나는데,,

connect by level을 사용할 때 어떤 부분을 모른채 사용하고 있어서 결과를 이해 못 하는지.. 

알려주시면, 감사하겠습니다!! 

by 마농 [2020.12.18 17:26:34]

Connect By Level 을 이용한 행 복제 방식은
- 반드시 dual 과 같이 1건짜리 자료에만 적용해야 합니다.
- 여러건의 자료에 직접 적용시 원치않는 행복제가 기하급수적으로 늘어나 성능에 문제가 됩니다.
http://gurubee.net/article/55635


by 민트에이드 [2020.12.18 17:48:39]

링크주신 팁 설명으로 이해했습니다. 감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입