공부기록장

[SQL] 한 테이블에만 있는 값 출력하기 (테이블 빼기, left outer join) 본문

▶ study/SQL

[SQL] 한 테이블에만 있는 값 출력하기 (테이블 빼기, left outer join)

친절한 3 2021. 4. 23. 18:25

위 그림처럼, 한 테이블에만 있는 값들을 출력하고 싶을 때 사용하는 SQL 쿼리를 소개하려고 한다. 

쿼리는 크게 minus를 사용, LEFT JOIN를 사용, 서브쿼리를 사용 하는 방법으로 나눠보았다.

참고로 minus이 가장 쉽다고 생각하는데 oracle DB에서만 사용이 가능하다!


기본 세팅

table은 student, student2 테이블을 예시로 들어주었다.

student table
student2 table


우리가 도출하고 싶은 테이블은 student에는 있지만, student2 테이블엔 없는 아래와 같은 join 결과값이다.


 

SQL 쿼리

1. minus 사용

select name, id
from student
minus
select name, id
from student2;

위에서 고른 테이블에서, 아래서 고른 테이블을 빼주는 연산이다. 딱 테이블 빼기 테이블을 적용시킨 오라클 DB 연산.

 

2. LEFT JOIN 사용

select s.name, s.id
from student s left join student2 s2 on s.name = s2.name and s.id=s2.id 
where s2.name is null;

student에 대해 left join을 해준 뒤, 그 중 student2에서 null값인 부분을 제외시켜주면 된다.

left join만 하고, is not null 조건을 달아주지않으면 나오는 결과는 아래와 같다.

 

3. 서브쿼리 사용

select name, id
from student 
where (name, id) not in (select * from student2);

student2 테이블에서,

student의 name과 id를 포함하지 않는

name과 id를 포함한 컬럼을 출력하라!  라는 의미.

Comments