상관 서브쿼리

Hyun-jin Won·2021년 10월 20일
0

MySQL로 SQL 시작하기

목록 보기
21/24

서브쿼리와 쿼리간의 관계가 있다.

서브쿼리를 통해 쿼리문을 좀 더 다채롭게 쓸 수 있다는 것을 알았다.
하지만 여기서 하나 더 추가해서 서브쿼리는 쿼리문에서 사용하는 table값을 가져와서 where문에 넣을 수 있다. 즉 이렇게 쿼리간의 연관성이 있는 서브쿼리를 상관 서브쿼리라고 부른다.

SELECT * FROM table1 WHERE table1_column EXIST 
(SELECT table2_column FROM table2 WHERE table1_column = table2_column)

EXISTS(서브쿼리)

해당 컬럼의 값이 안에 있는 값에 존재하는지를 확인하는 코드이다.
해당 값이 항상 값을 1개 이상 내놓을 필요는 없으며, 만약 서브쿼리의 값이 없다면 false로 처리된다.

NOT EXISTS(서브쿼리)

EXISTS의 반대의 값을 반환한다.

IN(데이터)

= 는 1개 이상의 데이터를 비교할 수 없어서 나온 비교문
EXISTS와 같이 서브쿼리도 추가할 수 있으나, 이 경우 SELECT 문의 데이터와 상관 서브쿼리일 필요가 없다. 또한 IN은 NULL을 무시하지 않으나 NULL 연산은 = 연산이 불가능하기 때문에 IS NULL 같은 추가 연산이 필요하다.

profile
삽질을 주체하지 못하는 잉간

0개의 댓글