IN
備考
IN 演算子を使用して、外部クエリの結果が、サブクエリの結果に含まれるかどうかを検査します。ステートメントの結果テーブルには、外部クエリが返す行で、サブクエリ内に関連する行があるものだけが含まれます。
例
次の例は、Chemistry 408 を受講した全学生の名前をリストします。
SELECT p.First_Name + ' ' + p.Last_Name FROM Person p, Enrolls e WHERE (p.id = e.student_id) AND (e.class_id IN
(SELECT c.ID FROM Class c WHERE c.Name = 'CHE 408'))
PSQL では、まずサブクエリが評価され、Class テーブルから Chemistry 408 の ID が取得されます。次に外部クエリが実行され、結果は、その講座の Enrolls テーブルにエントリがある学生だけに制限されます。
一般に、IN クエリは、EXISTS キーワードまたは制限句を持つ簡単な結合条件を使用すると、より効率的に行うことができます。PSQL では、サブクエリよりも結合の方が効率的に最適化されます。そのため、クエリの目的がデータベースのサブセットでの値の有無を判定することでない限り、簡単な結合条件を使用する方が効率的です。
関連項目