반응형

하나의 SQL 문에, 또 다른 SQL 문을 넣을 수 있다. 그리고 WHERE 절 또는 HAVING 절에 다른 SQL 문을 삽입한 경우, subquery 구문이 넣을 수 있다. Subquery는 먼저 테이블의 결합에 사용된다. 그리고 때로는 subquery가 두 테이블을 조인하는 유일한 방법이다.

Subquery

Subquery은 다음과 같다.

SELECT "필드1" FROM "테이블1"
WHERE "필드2" [비교 연산자] (SELECT "필드1" FROM "테이블2" WHERE "조건");

비교 연산자는 =,>, <,> =, <= 등의 연산자가 있고, "LIKE"등과 같은 문자에 대한 연산자가 있다.

Subquery 예제

SQL의 결합에 대한 예제이다.

store_information 테이블

store_namesalestxn_date
Los Angeles1500Jan-05-2018
San Diego250Jan-07-2018
Los Angeles300Jan-08-2018
Boston700Jan-08-2018

geography 테이블

region_namestore_name
EastBoston
EastNew York
WestLos Angeles
WestSan Diego

subquery를 이용하여 West에 있는 가게의 매출을 모두 조사하는 경우, 다음 SQL로 사용할 수 있다.

SELECT SUM(sales) FROM store_information
WHERE store_name IN
(SELECT store_name FROM geography
WHERE region_name = 'West');

결과는 아래와 같다.

SUM(sales)
2050

이 예제에서는 두 개의 테이블을 직접 결합하지 않지만, West에 있는 가게의 매출을 모두 직접 계산할 수 있다. 그것은 먼저 어떤 가게가 West에 있는지 확인한다. 그리고, 그 가게의 매상을 계산하고 합계를 구한다.

반응형

'SQL' 카테고리의 다른 글

[SQL][DML] INTERSECT  (0) 2018.01.09
[SQL][DML] UNION, UNION ALL  (0) 2018.01.09
[SQL][DML] Subquery  (0) 2018.01.09
[SQL][DML] JOIN  (0) 2018.01.09
[SQL][DML] AS - Aliases  (0) 2018.01.09
[SQL][DML] HAVING  (0) 2018.01.09

+ Recent posts