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 にあるかを確認する。そして、その店舗の売上を計算して合計を求める。