[DB] SET Operator

2024. 4. 14. 22:00BE/DB

1. SET Operator

 

Operator 설명 중복
UNION 합집합 제거
UNION ALL 합집합 유지
INTERSECT 교집합 없음
MINUS 차집합 없음

 

 

mysql은 UNION, UNION ALL 연산자는 제공한다.

 

단, MINUS, INTERSECT 연산자는 지원하지 않는다.

 

그래서 동일한 기능을 다른 방식으로 구현해야 한다.

 


2. INTERSECT 극복

 

select col_1
from table_1
intersect
select col_2
from table_2;

동일한 기능을 mysql에서는 inner join으로 극복해야 한다.

 

select col_1
from table_1 t1 inner join table_2 t2
on t1.col_1 = t2.col_2;

 


3. MINUS 극복

 

select col_1
from table_1
minus
select col_2
from table_2;

동일한 기능을 mysql에서는 not in, not exists, left outer join으로 극복해야 한다.

 

  • not in
select col_1
from table_1
where not in (
    select col_2
    from table_2
);

 

  • not exists
select col_1
from table_1 t1
where not exists (
    select col_2
    from table_2 t2
    where t1.col_1 = t1.col_2
);

 

  • left outer join
select col_1
from table_1 t1
left join table_2 t2
on t1.col_1 = t2.col_2
where t2.col_2 is null;

 


'BE > DB' 카테고리의 다른 글

[DB] INDEX  (1) 2024.04.15
[DB] Transaction  (1) 2024.04.14
[DB] 내장함수  (0) 2024.04.14
[DB] NULL, CASE, ESCAPE  (0) 2024.04.14
[SQL] SQL 예시 정리  (0) 2023.08.29