Not Exists

김동현·2024년 8월 14일

TIL

목록 보기
3/3

Not Exists - Boolean 값을 반환.

  • 서브 쿼리가 결과를 반환하는지 여부를 TRUE, FALSE로 표현한다.
  • 서브 쿼리의 데이터가 존재하지 않을 경우 데이터가 조회된다.
    그래서 내가 작성한 쿼리는 공통된 ID를 찾는 쿼리로 데이터가 조회된다. 따라서 Exists에서는 값이 나오지만 Not Exists에서는 나오지 않게 된다.

SQL 고득점 Kit - 8.14

inner join의 서브 쿼리 결과는 다음과 같다.

  • 여기서 결국 1, 3, 5라는 값만 존재하고 나머지는 원래 없는 것으로 보는 것이다.
  • 따라서, 서브 쿼리에서 존재하지 않는 데이터를 조회해야 하는데 존재하지 않는 데이터가 없기 때문에 Not를 사용하면 결과가 안 나오고 Not을 사용하지 않으면 1, 3, 5 결과가 나오는 것이다.
a.idb.id
11
2
33
4
55

서브 쿼리
1
3
5

그렇다면 왜 where a.id = b.id를 통해서 나온 결과는 서브 쿼리가 없다고 하여 데이터가 나올까?

예시로 where은 다음과 같은 결과가 출력이 된다. 왜냐 둘의 id가 같은 것의 조건이니 Boolean으로 나옴.

  • Exists로 결과를 출력하면 1, 3, 5로 결과가 나온다.
  • Not Exists로 결과를 출력하면 2, 4로 결과가 나온다.
  • Where을 두 테이블을 비교하여 둘이 동일한 것만 출력하는 쿼리인데 그렇기 때문에 동일하지 않는 결과도 가지고 있다. 그래서 Not Exists를 사용했을 때 결과가 나올 수 있다. 데이터가 존재하지 않기 때문
a.idb.id서브 쿼리
11True
2False
33True
4False
55True
profile
'The best way to get started is to quit talking and begin doing.'

0개의 댓글