Recommanded Free YOUTUBE Lecture: High Avalibility Application On AWS Cloud

모든 쿼리는 연습용 데이터베이스를 통해서 실행해 볼 수 있다. MySQL & SQL 스터디 준비 를 참고하여 실습환경을 구축하자.

MySQL IN Operator

  • IN 연산자를 사용하면 WHERE절에 여러 값을 지정 할 수 있다.

  • 값은 콤마(,) 로 구분하여 괄호로 묶으며, 이 값 중에서 하나 이상과 일치하면 조건에 맞는 것으로 평가한다. 즉 OR 연산을 수행한다.

IN 구문

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

서브쿼리(sub query)를 조건으로 넣을 수 있다.

SELECT _column_name(s)_  
FROM _table_name_  
WHERE _column_name_ IN (_SELECT STATEMENT_);

Example

Northwind 데이터베이스의 "customers" 테이블에는 고객 정보가 들어 있다.

SELECT CustomerID, companyName, ContactName, ContactTitle, Address, City 
FROM customers;
CustomerID CompanyName ContractName ContactTitle Address City
ALFKI Alfreds Futterkiste Maria Anders Sales Representative Obere Str. 57 Berlin
ANATR Ana Trujillo Emparedados y helados Ana Trujillo Owner Avda. de la Constitución 2222 México D.F.
ANTON Antonio Moreno Taquería Antonio Moreno Owner Mataderos 2312 México D.F.
AROUT Around the Horn Thomas Hardy Sales Representative 120 Hanover Sq. London
BERGS Berglunds snabbköp Christina Berglund Order Administrator Berguvsvägen 8 Luleå
BLAUS Blauer See Delikatessen Hanna Moos Sales Representative Forsterstr. 57 Mannheim
BLONP Blondel père et fils Frédérique Citeaux Marketing Manager 24, place Kléber Strasbourg
BOLID Bólido Comidas preparadas Martín Sommer Owner C/ Araquil, 67 Madrid
BONAP Bon app' Laurence Lebihan Owner 12, rue des Bouchers Marseille
BOTTM Bottom-Dollar Markets Elizabeth Lincoln Accounting Manager 23 Tsawassen Blvd. Tsawassen
BSBEV B's Beverages Victoria Ashworth Sales Representative Fauntleroy Circus London
CACTU Cactus Comidas para llevar Patricio Simpson Sales Agent Cerrito 333 Buenos Aires
CENTC Centro comercial Moctezuma Francisco Chang Marketing Manager Sierras de Granada 9993 México D.F.

Germany, France, UK(영국)에 거주하는 모든 고객을 선택한다.

SELECT CustomerID, companyName, ContactName, ContactTitle, Address, Country from customers WHERE Country IN ('Germany', 'France', 'UK');
CustomerID CompanyName ContractName ContactTitle Address Country
ALFKI Alfreds Futterkiste Maria Anders Sales Representative Obere Str. 57 Germany
AROUT Around the Horn Thomas Hardy Sales Representative 120 Hanover Sq. UK
BLAUS Blauer See Delikatessen Hanna Moos Sales Representative Forsterstr. 57 Germany
BLONP Blondel père et fils Frédérique Citeaux Marketing Manager 24, place Kléber France
BONAP Bon app' Laurence Lebihan Owner 12, rue des Bouchers France
BSBEV B's Beverages Victoria Ashworth Sales Representative Fauntleroy Circus UK

Germany, France, UK(영국)에 이외의 지역에 거주하는 모든 고객을 선택한다.

SELECT CustomerID, companyName, ContactName, ContactTitle, Address, Country from customers WHERE Country NOT IN ('Germany', 'France', 'UK');
CustomerID CompanyName ContractName ContactTitle Address Country
ANATR Ana Trujillo Emparedados y helados Ana Trujillo Owner Avda. de la Constitución 2222 Mexico
ANTON Antonio Moreno Taquería Antonio Moreno Owner Mataderos 2312 Mexico
BERGS Berglunds snabbköp Christina Berglund Order Administrator Berguvsvägen 8 Sweden
BOLID Bólido Comidas preparadas Martín Sommer Owner C/ Araquil, 67 Spain
BOTTM Bottom-Dollar Markets Elizabeth Lincoln Accounting Manager 23 Tsawassen Blvd. Canada
CACTU Cactus Comidas para llevar Patricio Simpson Sales Agent Cerrito 333 Argentina
CENTC Centro comercial Moctezuma Francisco Chang Marketing Manager Sierras de Granada 9993 Mexico

suppliers 테이블에는 제품 공급자 정보가 들어 있다.

SuppilerID CompanyName City Country
1 Exotic Liquids London UK
2 New Orleans Cajun Delights New Orleans USA
3 Grandma Kelly's Homestead Ann Arbor USA
4 Tokyo Traders Tokyo Japan
5 Cooperativa de Quesos 'Las Cabras' Oviedo Spain
6 Mayumi's Osaka Japan
7 Pavlova, Ltd. Melbourne Australia

공급자와 동일한 국가에 있는 모든 고객을 선택한다.

SELECT CustomerID, companyName, ContactName, ContactTitle, Address, Country 
FROM customers 
WHERE Country 
IN (SELECT Country From suppliers);
CustomerID CompanyName ContractName ContactTitle Address Country
ALFKI Alfreds Futterkiste Maria Anders Sales Representative Obere Str. 57 Germany
AROUT Around the Horn Thomas Hardy Sales Representative 120 Hanover Sq. UK
BERGS Berglunds snabbköp Christina Berglund Order Administrator Berguvsvägen 8 Sweden
BLAUS Blauer See Delikatessen Hanna Moos Sales Representative Forsterstr. 57 Germany
BLONP Blondel père et fils Frédérique Citeaux Marketing Manager 24, place Kléber France
BOLID Bólido Comidas preparadas Martín Sommer Owner C/ Araquil, 67 Spain
BONAP Bon app' Laurence Lebihan Owner 12, rue des Bouchers France

IN 연산자의 장점

Germany, France, UK(영국)에 이외의 지역에 거주하는 모든 고객을 선택하는 쿼리는 아래와 같이 OR로도 작성 할 수 있다.

SELECT CustomerID, companyName, ContactName, ContactTitle, Address, Country 
FROM customers 
WHERE Country = 'Germany' OR Country = 'France' OR Country= 'UK';

하지만 IN 으로 할 경우 아래와 같은 장점이 있다.

  • 목록의 값이 여러개 일때, IN 연산자가 OR 보다 쓰고 읽기에 좋다.

  • 조건 순서를 보다 쉽게 관리 할 수 있다.

  • IN 연산자가 OR 연산자보다 빠르다.

  • 서브쿼리문을 사용 할 수 있다.

참고

SQL Study With MySQL 에서 MySQL과 관련된 다른 문서들을 읽을 수 있습니다.