개발/데이터베이스

[PostgreSQL] 서브쿼리 연산자

고등어찌짐 2022. 4. 26. 23:47

 

EXISTS

하나 이상의 로우를 반환할 시 true, 아닐 시 false 

SELECT * FROM table1
WHERE EXISTS(
	SELECT * FROM table2
);

 

IN

특정 컬럼에서, IN 연산자로 지정한 value 값들을 가지는 row 들을 반환한다. NOT IN 은 그 반대이다. 

SELECT * FROM table1
WEHRE column1 IN ( 
	1, 2, 3
);

SELECT * FROM table1
WEHRE column1 NOT IN ( 
	1, 2, 3
);

 

ANY, SOME

서브 쿼리 내의 결과값에서, WHERE 로 검색한 로우가 하나라도 존재하는 경우에 ( true, false 결과와 같음 ) 메인 쿼리를 실행한다. SOME 연산자도 같은 의미로 사용된다. 

SELECT * FROM author
WHERE 'Harry potter' = ANY (
	SELECT book_name FROM book
);

SELECT * FROM author
WHERE 'Harry potter' = SOME (
	SELECT book_name FROM book
);

 

ALL
ALL 은 ANY, SOME 연산자와는 다르게 서브쿼리 조건을 모두 만족해야 true 결과를 가져올 수 있다. 

SELECT * FROM book
WHERE 1000 <= ALL (
	SELECT price FROM borrow
);

 

LIKE
문자열 패턴 검색

// Author : Kimmy
SELECT * FROM book WHERE name LIKE 'K____';
SELECT * FROM book WHERE name LIKE '_i___';
SELECT * FROM book WHERE name LIKE 'K%';

 

 

#참조

모두를 위한 PostgreSQL