모든 쿼리는 연습용 데이터베이스를 통해서 실행해 볼 수 있다. 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 NOTIN('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';
모든 쿼리는 연습용 데이터베이스를 통해서 실행해 볼 수 있다. MySQL & SQL 스터디 준비 를 참고하여 실습환경을 구축하자.
MySQL IN Operator
IN 연산자를 사용하면 WHERE절에 여러 값을 지정 할 수 있다.
값은 콤마(,) 로 구분하여 괄호로 묶으며, 이 값 중에서 하나 이상과 일치하면 조건에 맞는 것으로 평가한다. 즉 OR 연산을 수행한다.
IN 구문
서브쿼리(sub query)를 조건으로 넣을 수 있다.
Example
Northwind 데이터베이스의 "customers" 테이블에는 고객 정보가 들어 있다.
Germany, France, UK(영국)에 거주하는 모든 고객을 선택한다.
Germany, France, UK(영국)에 이외의 지역에 거주하는 모든 고객을 선택한다.
suppliers 테이블에는 제품 공급자 정보가 들어 있다.
공급자와 동일한 국가에 있는 모든 고객을 선택한다.
IN 연산자의 장점
Germany, France, UK(영국)에 이외의 지역에 거주하는 모든 고객을 선택하는 쿼리는 아래와 같이 OR로도 작성 할 수 있다.
하지만 IN 으로 할 경우 아래와 같은 장점이 있다.
목록의 값이 여러개 일때, IN 연산자가 OR 보다 쓰고 읽기에 좋다.
조건 순서를 보다 쉽게 관리 할 수 있다.
IN 연산자가 OR 연산자보다 빠르다.
서브쿼리문을 사용 할 수 있다.
참고
SQL Study With MySQL 에서 MySQL과 관련된 다른 문서들을 읽을 수 있습니다.
Recent Posts
Archive Posts
Tags