앞에 IN, ANY, ALL 등의 연사자를 설명하면서 서브 쿼리를 미리 사용해 보았습니다. 서 브 쿼리란 SELECT로 조회한 데이터를 가지고 다시 메인 SELECT의 연산의 기초 값이 되 는 것입니다. 즉, SELECT를 연결하여 이중 조회하는 것을 말합니다.

서브 쿼리는 MySQL 4.1 이상 버전에서만 지원합니다.

| 쿼리 문법 |

SELECT * from 테이블 where 컬럼 연산자 (서브 쿼리); 

12.7.1 쿼리 실습

서브 쿼리를 작성할 때는 괄호를 이용하여 감싸 줍니다.

| 예제 쿼리 |

select * from members where manager IN (select manager from members where City='seoul'); 

select manager from members where City='seoul' 쿼리가 괄호 안에 있기 때문에 먼 저 실행이 됩니다. 결과값은 IN 연산자의 대입 값으로 처리되고, 이에 따라서 메인 쿼리

select * from members where manager IN ()이 실행됩니다.

| 콘솔 실습 화면 |

mysql> select * from members where manager IN (select manager from members where City='seoul');
+----+----------+-----------+-------------+-------+---------+-----------+-------------------+
| Id | LastName | FirstName | Address     | City  | Country | manager   | email             |
+----+----------+-----------+-------------+-------+---------+-----------+-------------------+
|  1 | hojin    | lee       | shinchon    | seoul | korea   | infohojin | hojin@jinyphp.com |
|  2 | jiny     | NULL      | NULL        | NULL  | korea   | infohojin | jiny@jinyphp.com  |
|  3 | james    | kim       | youngdun-po | seoul | korea   | info      | james@jinyphp.com |
|  4 | eric     | jung      | seocho-gu   | busan | korea   | info      | eric@jinyphp.com  |
+----+----------+-----------+-------------+-------+---------+-----------+-------------------+
4 rows in set (0.00 sec)

값을 포함하고 있는지 검사할 때는 IN 연산자를 사용합니다. 크기를 비교할 때는 >, >=, <, <=를 사용할 수 있습니다.