サブクエリ・セット・メンバシップ・テストを使用して、メイン・クエリからの値をサブクエリの複数の値と比較できます。
サブクエリ・セット・メンバシップ・テストは、メイン・クエリの各ローの 1 つのデータ値を、サブクエリが生成したデータ値の 1 つのカラムと比較します。メイン・クエリのデータ値がカラムのデータ値のいずれかと一致する場合、サブクエリは TRUE を返します。
Shipping 部または Finance 部の部長である従業員の名前を選択します。
SELECT GivenName, Surname FROM Employees WHERE EmployeeID IN ( SELECT DepartmentHeadID FROM Departments WHERE ( DepartmentName='Finance' OR DepartmentName = 'Shipping' ) ); |
GivenName | Surname |
---|---|
Mary Anne | Shea |
Jose | Martinez |
この例のサブクエリは、Shipping 部と Finance 部の部長に対応する ID 番号を、Departments テーブルから抽出します。次にメイン・クエリが、サブクエリによって検索された 2 つの値のいずれかに一致する ID 番号を持つ従業員の名前を返します。
SELECT DepartmentHeadID FROM Departments WHERE ( DepartmentName='Finance' OR DepartmentName = 'Shipping' ); |
サブクエリ・セット・メンバシップ・テストは =ANY テストと同等です。次のクエリは前述の例のクエリと同等です。
SELECT GivenName, Surname FROM Employees WHERE EmployeeID = ANY ( SELECT DepartmentHeadID FROM Departments WHERE ( DepartmentName='Finance' OR DepartmentName = 'Shipping' ) ); |
サブクエリ・セット・メンバシップ・テストは、サブクエリによって生成される値に一致しないカラム値を持つローを抽出する場合にも使用できます。セット・メンバシップ・テストを否定するには、キーワード IN の前に NOT を挿入します。
このクエリのサブクエリは、Finance 部または Shipping 部の部長でない従業員の姓と名前を返します。
SELECT GivenName, Surname FROM Employees WHERE EmployeeID NOT IN ( SELECT DepartmentHeadID FROM Departments WHERE ( DepartmentName='Finance' OR DepartmentName = 'Shipping' ) ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |