SQL の基本 | DML: データ操作言語 | Subquery

1 つの SQL 文の中に、別の SQL 文を入れることができる。WHERE 句または HAVING 句に別の SQL 文を挿入する場合、subquery 構文を使用できる。Subquery はまずテーブルの結合に使用される。また、場合によっては subquery が 2 つのテーブルを結合する唯一の方法になる。

Subquery

Subquery は次のとおりである。

SELECT "フィールド1" FROM "テーブル1"
WHERE "フィールド2" [比較演算子] (SELECT "フィールド1" FROM "テーブル2" WHERE "条件");

比較演算子には =><>=<= などの演算子があり、LIKE などの文字列に対する演算子もある。

Subquery の例

SQL の結合に関する例である。

store_information テーブル

store_name sales txn_date
Los Angeles 1500 Jan-05-2018
San Diego 250 Jan-07-2018
Los Angeles 300 Jan-08-2018
Boston 700 Jan-08-2018

geography テーブル

region_name store_name
East Boston
East New York
West Los Angeles
West San 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

この例では 2 つのテーブルを直接結合していないが、West にある店舗の売上を直接計算できる。まず、どの店舗が West にあるかを確認する。そして、その店舗の売上を計算して合計を求める。