サーチ…


サブクエリ

副問合せは、別のSQL問合せ内の問合せです。サブクエリはインナークエリまたはインナーセレクトとも呼ばれ、サブクエリを含むステートメントは外部クエリまたは外部セレクトと呼ばれます。

注意

  1. サブクエリは括弧で囲む必要があります。
  2. ORDER BYはサブクエリで使用できません。
  3. サブクエリでは、BLOB、配列、テキスト・データ型などのイメージ・タイプは使用できません。

サブクエリは、IN、比較演算子などのwhere節、from節、select節の中のselect、insert、updateおよびdelete文とともに使用できます。

サブクエリの例を示すためにクエリを実行するITCompanyInNepalという名前のテーブルがあります。

ここに画像の説明を入力

例: Select文によるサブクエリ

In演算子とwhere句を使用します。

SELECT *
FROM ITCompanyInNepal
WHERE Headquarter IN (SELECT Headquarter 
                      FROM ITCompanyInNepal
                      WHERE Headquarter = 'USA');

比較演算子WHERE

SELECT *
FROM ITCompanyInNepal
WHERE NumberOfEmployee < (SELECT AVG(NumberOfEmployee) 
                          FROM ITCompanyInNepal
                      )

選択句で

SELECT   CompanyName,
         CompanyAddress,
         Headquarter,
         (Select SUM(NumberOfEmployee)
         FROM ITCompanyInNepal
         Where Headquarter = 'USA') AS TotalEmployeeHiredByUSAInKathmandu
FROM     ITCompanyInNepal 
WHERE    CompanyAddress = 'Kathmandu' AND Headquarter = 'USA'

INSERT文を含むサブクエリ

IndianCompanyテーブルからITCompanyInNepalにデータを挿入する必要があります。 IndianCompanyのテーブルは次のとおりです。

ここに画像の説明を入力

INSERT INTO ITCompanyInNepal
SELECT * 
FROM IndianCompany

更新文を含む副問合せ

本社が米国であるすべての企業が、米国企業の方針の変更に伴い、ネパールのすべての米国企業から50名の従業員を雇うことにしたとします。

UPDATE ITCompanyInNepal
SET NumberOfEmployee = NumberOfEmployee - 50
WHERE Headquarter IN (SELECT Headquarter 
                      FROM ITCompanyInNepal 
                      WHERE Headquarter = 'USA')

Deleteステートメントを持つサブクエリ

デンマークの本部を持つすべての企業がネパールから企業を閉鎖することにしたとします。

DELETE FROM ITCompanyInNepal
WHERE Headquarter IN (SELECT Headquarter 
                     FROM ITCompanyInNepal
                     WHERE Headquarter = 'Denmark')


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow