SQL サブクエリ

注: 最新のヘルプ コンテンツをできるだけ早く、お客様がお使いの言語で提供したいと考えております。このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。私たちの目的は、このコンテンツがお客様の役に立つようにすることです。お客様にとって役立つ情報であったかどうかを、このページの下部でお知らせください。簡単に参照できるように、こちらに英語の記事があります。

サブクエリは、SELECT ステートメントを選択] で、[内にネストされています.次に、挿入する.削除、または UPDATE ステートメントまたは別のサブクエリします。

構文

サブクエリを作成するのには、次の 3 つの形式の構文を使用できます。

比較[すべて |すべて |いくつか] (連結)

[しない](連結)

[しない]EXISTS (連結)

サブクエリでは、次の指定項目があります。

引数

説明

比較

式と式の前に、サブクエリの結果を比較する比較演算子。

expression

サブクエリの結果が設定されている式が検索されます。

sqlstatement

SELECT ステートメントで、他の SELECT ステートメントとして次のルールと同じ書式が設定されます。 かっこで囲む必要があります。


解説

サブクエリを使用すると、WHERE 句または HAVING 句の式または SELECT ステートメントのフィールド リストの代わりにすることができます。 サブクエリを SELECT ステートメントを使用して、WHERE 句または HAVING 句の式で評価するのに 1 つ以上の特定の値のセットを提供します。

すべてまたは一部の述語は、サブクエリで取得されるレコードと比較を満たすレコードの主なクエリを取得する類義語を使用します。 次の例では、単価が 25% 以上の割引価格で販売された製品のどれかより大きいすべての製品が返されます。

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

メインのクエリでサブクエリで取得したすべてのレコードと比較を満たすレコードのみを取得するのにには、すべての述語を使用します。 前の例では、すべてに、変更した場合の単価が 25% 以上の割引価格で販売されたすべての製品を超える製品だけを返します。 これがより厳しくなります。

これらのレコードのみをいくつかのレコード サブクエリで同じ値が含まれている主なクエリを取得するのにには、述語を使用します。 次の例では、割引率 25% 以上がすべての製品が返されます。

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

逆に、NOT IN を使用すると、これらのレコードのみ、メインのクエリをサブクエリでレコードが含まれていない同じ値には取得します。

EXISTS 述語を使用する (省略可能な NOT 予約語) のサブクエリですべてのレコードを返すかどうかを決定するときに true または false 比較します。

サブクエリの外側の FROM 句に記載されているテーブルを参照するサブクエリでテーブル名の別名を使用することもできます。 次の例では、従業員の給与は、同じ役職を持つすべての従業員の平均給与以上の名前を返します。 [従業員] テーブルには、"T1"エイリアスが与えられます。

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

前の例では、 予約語はオプションです。

クロス集計クエリでサブクエリは、いくつか-具体的には、名前を付けて述語 (WHERE 句でもの)。 クロス集計クエリでは、([リストのもの) 出力としてサブクエリすることはできません。



Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×