본문 바로가기
SQL

[Non Equi 조인] between 사용시

by ISLA! 2023. 3. 18.

조인 시 연결하는 키 값을 어떻게 연결하느냐에 따라,

  • Equi 조인 : join 시 연결하는 키 값이 서로 같은 경우( =로 연결)
  • Non Equi 조인 : 키 값으로 연결할 때, =가 아닌 다른 연산자를 사용 (between, >, >=, <, <=)

between 조인 : history 데이터 다룰 때 유용

[예시]📍각 직원의 급여 '등급'을 추출하기 위해 between을 사용하여 Join

-- 직원정보와 급여등급 정보를 추출. 
select e.*, s.grade as sal_grade, s.losal, s.hisal 
from emp e 
join salgrade s on e.sal between s.losal and s.hisal ;

▶︎ emp 테이블에 직원 급여 정보가 있음 : 예) sal = 800

▶︎ sal_grade 테이블에 losal, hisal과 그 사이 값의 등급을 나타내는 grade 컬럼이 있음.

  (예로, losal이 100 hisal 500이면 100~500 사이의 급여를 받는 사람의 grade = 1)

 


[기타] cross 조인

▶︎ 조인하는 컬럼없이, 두 테이블간 가능한 모든 연결을 결합(두 테이블 간 키 값을 모두 곱한 결과가 나옴) >> 고수의 영역

▶︎ 예시 쿼리:

with 
temp_01 as
(
select 1 as rnum
union all
select 2 as rnum
)
select *
from dept a 
cross join temp_01 b;

temp_01 이라는 임시 테이블을 생성 : rnum이라는 컬럼에 1, 2를 차례로 생성함.

실제 쿼리 작성시 temp_01을 dept 테이블과 cross join 하면, 

dept 테이블의 모든 키 값이 두 배가 되어 나타남.

728x90