반응형
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)
반응형