SQL - IN 구문 활용하기 (IN 사용법, IN과 OR의 차이, IN 구문 사용 예시)

반응형

IN 구문이란?

마이크로소프트 공식문서에 의하면,
지정한 값이 하위 쿼리 또는 목록의 값과 일치하는지 여부를 결정하는 것이라고 한다.
IN 구문은 SQL 쿼리에서 사용되는 조건절 중 하나로, 특정 값을 포함하는지 여부를 확인하는 데 사용한다.
즉, 여러 개의 동등 조건(OR 조건)을 하나의 'IN' 구문으로 간략하게 표현하는 것이다.


IN 구문 (IN 문법, 사용법)

test_expression [ NOT ] IN   
    ( subquery | expression [ ,...n ]  
    )
  • subquery
    • 결과 집합이 하나의 열로 구성된 하위 쿼리
    • 이 열은 test_expression과 동일한 데이터 유형을 가져야 한다.
  • expression [ ,...n ]
    • 일치 여부를 테스트할 식 목록
    • 모든 식은 test_expression과 동일한 유형이여야 한다.

IN vs OR (IN과 OR의 비교)

연산자작동 방식장점단점성능
OR두 개 이상의 조건을 논리적 합산으로 연결
(하나라도 참이면 TRUE)
조건이 적을 경우 빠름조건이 많거나 복잡할 경우 느림 (모든 조건을 확인해야 함),
특히 여러 테이블 조인 시 성능 저하 가능성 높음
상황에 따라 다름
(조건 수, 복잡성, 테이블 조인 여부 등에 따라 영향)
IN하나의 값을 여러 값 목록과 비교
(존재 여부 확인)
값 목록이 작고 고정된 경우 매우 빠름값 목록이 크거나 동적으로 변하는 경우 느림값 목록 크기, 변동성, 인덱스 사용 등에 따라 다름

사용 예시

테스트용 테이블 정보

조회 쿼리

OR 구문을 사용하여 쿼리를 구성한 경우 (SQL OR)

  • id 컬럼의 값이 1과 2인 행 조회하기

select
	*
from
	testTable
where
	(id = 1 or id = 2)

 

IN 구문을 사용하여 쿼리를 구성한 경우 (SQL IN)

  • id 컬럼의 값이 1과 2인 행 조회하기
  • 위의 OR 구문을 사용한 쿼리와 동일한 결과를 반환
select
	*
from
	testTable
where
	id in (1,2)

 

 

NOT IN 구문을 사용하여 쿼리를 구성한 경우 (SQL NOT IN)

  • id 값이 2가 아닌 모든 값 조회하기
select
	*
from
	testTable
where
	id not in (2)

 

서브 쿼리로 구성된 IN 구문을 사용한 경우 (SQL IN 서브쿼리)

  • 테이블의 모든 id 값 조회하기
select
	*
from
	testTable
where
	id in ( select id from testTable )

참고

w3schools.com - SQL IN Operator
마이크로소프트 공식 문서 - SQL Server 2022 - IN(Transact-SQL)

반응형