IT&전산

[SQL] IN 연산자

Blogin365 2022. 12. 21. 16:44
반응형

[SQL] IN 연산자

오늘은 SQL의 IN 연산자에 대해 알아보겠습니다.

IN 연산자는 WHERE 조건절에 여러 개의 구체적인 값을 대입할 수 있도록합니다.

 

IN 연산자

[예시 문법]

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

 

IN 연산자 사용 예시
IN 연산자 사용 예시

Country 컬럼의 값이 'Germany' 혹은 'France' 혹은 'UK'인 레코드만 검색합니다.

 

IN연산자는 여러개의 OR 연산자를 간결하고 빠르게 사용하는 방법이라고 생각할 수 있습니다.

따라서 아래 Query 문을 IN 연산자 대신 OR 연산자를 사용하여 표현할 수도 있습니다.

IN 연산자 표현

SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

OR 연산자 표현

SELECT * FROM Customers
WHERE Country = 'Germany' OR Country = 'France' OR Country = 'UK';

 

NOT IN 연산자

IN연산자 앞에 NOT연산자를 붙여 NOT IN 연산자 사용도 가능합니다.

[예시 문법]

SELECT column_name(s)
FROM table_name
WHERE column_name NOT IN (value1, value2, ...);

 

NOT IN 연산자 사용 예시

Country 컬럼의 값이 'Germany' 와 'France' 와 'UK'가 아닌 레코드만 검색합니다.

IN연산자와 달리 NOT IN 연산자는 해당 값들이 포함된 모든 값을 배제하기 때문에 OR가 아닌 AND로 묶인 조건절로 표현할 수 있습니다.

 

NOT IN 연산자 표현

SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');

AND 연산자 표현

SELECT * FROM Customers
WHERE Country != 'Germany' AND Country != 'France' AND Country != 'UK';

 

쿼리안의 쿼리

IN 연산자의 괄호 안에는 값 뿐 아니라 Query문 그자체도 들어갈 수 있습니다.

이를 응용하면 다양한 쿼리문 작성이 가능합니다.

SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT column_name(s) FROM table_name);

 

쿼리문을 포함한 IN 연산자

Suppliers 테이블에 있는 Country만 검색한 후 그 Country에 해당하는 레코드를 Customers 테이블에서 검색합니다.

 

이상입니다.

반응형