본문 바로가기
DataBase

[postgreSQL][데이터 필터링]IN 연산자

by 바까 2021. 9. 13.
반응형
--4)IN 연산자
--특정 집합(컬럼 혹은 리스트)에서 특정 집합 혹은 리스트가 존재하는지 판단하는 연산자.
--(1)IN 연산자 문법
--SELECT *
--FROM TABLE_NAME
--WHERE COLUMN_NAME IN(VALUE1, VALUE2,...); --COLUMN_NAME이 가지고 있는 집합에서 VALUE1, VALUE2등의 값이 존재하는지 확인

--SELECT *
--FROM TABLE_NAME
--WHERE COLUMN_NAME IN
--(SELECT CULUMN_NAME2 FROM TABLE_NAME2); --COLUMN_NAME이 가지고 있는 집합에서 TABLE_NAME2테이블의 COLUMN_NAME2의 집합이 존재하는지 확인

select CUSTOMER_ID, RENTAL_ID, RETURN_DATE
 from rental r 
where CUSTOMER_ID in (1,2)  --1 혹은 2
order by return_date desc;
--가독성, 알아보기 쉽다
--(DBMS 최적화기, SQL 최적화)옵티마이저의 특정상 IN조건이 성능상 유리할 때가 많다.

--OR의 사용
--IN연산자는 OR && = 과 같다
select CUSTOMER_ID, RENTAL_ID, RETURN_DATE
 from rental r 
where	CUSTOMER_ID = 1 
	 or CUSTOMER_ID = 2 --1혹은 2
order by return_date desc;

--(2)NOT IN의 사용
select CUSTOMER_ID, RENTAL_ID, RETURN_DATE
 from rental r 
where CUSTOMER_ID not in (1,2)  --1 혹은 2가 아닌 다른 수 == 1과 2를 제외한 나머지 전부
order by return_date desc;

--NOT IN 은 AND와 같다
select CUSTOMER_ID, RENTAL_ID, RETURN_DATE
 from rental r 
where	CUSTOMER_ID != 1 
	 AND CUSTOMER_ID <> 2 --1 과 2가 아닌
order by return_date desc;

--(3)서브쿼리
select CUSTOMER_ID
from rental r 
where 
	CAST(RETURN_DATE as DATE) = '2005-05-27'; --RETURN_DATE가 2005년 5월 27일인 CUSTOMER_ID를 출력

select FIRST_NAME, LAST_NAME
from customer
where customer_id IN(		--RETURN_ID가 2005년 5월 27일인 CUSTOMER_ID의
	select customer_id		--FITST_DATE, LAST_DATE를 출력한다.
	from rental r 
	where 
		CAST(RETURN_DATE as DATE)='2005-05-27');
반응형

댓글