SQL サブクエリ

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

サブクエリとは、SELECT、SELECT...INTO、INSERT INTO、DELETE、UPDATE などのステートメントおよび他のサブクエリの中にネストされた SELECT ステートメントのことです。

構文

サブクエリの作成には、次の 3 つの構文のいずれかを使用します。

comparison [ANY | ALL | SOME] (sqlstatement)

expression [NOT] IN (sqlstatement)

[NOT] EXISTS (sqlstatement)

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

引数

説明

comparison

式、およびその式とサブクエリの結果とを比較する比較演算子。

expression

サブクエリの結果の検索に使用する式。

sqlstatement

SELECT ステートメント。書式や規則は他の SELECT ステートメントの場合と同じです。この SELECT ステートメントはかっこで囲みます。


解説

サブクエリは、SELECT ステートメントのフィールド リストの中で、または WHERE 句や HAVING 句の中で、式の代わりとして使用できます。サブクエリでは、SELECT ステートメントを使用して、WHERE 句および HAVING 句の式で評価に使用する 1 つまたは複数の値を取得します。

サブクエリで取得したレコードとの比較結果が True になるレコードをメイン クエリから取得するには、ANY 述語または SOME 述語 (この 2 つは同義) を使用します。次の例では、値引率 25% 以上で売られた商品よりも単価の高いすべての商品を返します。

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

サブクエリで取得したすべてのレコードとの比較結果が True になるレコードのみをメイン クエリから取得するには、ALL 述語を使用します。前の例で ANY を ALL に変更すると、値引率 25% 以上で売られたすべての商品よりも単価の高い商品のみを返します。つまり、取得されるレコードがさらに限定されます。

サブクエリの中に同じ値を持つレコードのみをメイン クエリから取得するには、IN 述語を使用します。次の例では、値引率 25% 以上で売られたすべての商品を返します。

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

逆に、サブクエリの中に同じ値を持つレコードがないレコードのみをメイン クエリから取得するには、NOT IN 句を使用します。

EXISTS 述語 (予約語 NOT を併用することも可能) はサブクエリがレコードを返すかどうかを調べることができるので、True/False の中で使用できます。

サブクエリの中でテーブル名の別名を使用すると、サブクエリの外側にある FROM 句に指定したテーブルを参照することができます。次の例では、同じ役職の全社員のうち平均以上の給与を受け取っている社員の名前を返します。また、Employees テーブルに "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;

この例では、予約語 AS は省略可能です。

一部のサブクエリは、クロス集計クエリの中で述語 (特に WHERE 句の中の述語) として使用できます。クロス集計クエリでは、SELECT のリストの中で出力としてサブクエリを使用することはできません。



注: 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

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

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

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

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

×