IN (Transact-SQL)
更新 : 2005 年 12 月 5 日
指定された値が、サブクエリまたは一覧内の値と一致するかどうかを判断します。
構文
test_expression [ NOT ] IN
( subquery | expression [ ,...n ]
)
引数
- test_expression
任意の有効な式です。
- subquery
1 列の結果セットを返すサブクエリです。この列のデータ型は、test_expression のデータ型と同じである必要があります。
- expression[ ,... n ]
一致するかどうかのテストに使用する式のリストです。すべての式は、test_expression と同じ型である必要があります。
戻り値の型
Boolean
戻り値
test_expression の値が subquery によって返される値と等しい場合、またはコンマ区切りの一覧内の expression と等しい場合、戻り値は TRUE になり、そうでない場合は FALSE になります。
NOT IN を使用すると、subquery の値または expression は否定されます。
注意 : |
---|
IN または NOT IN を使用して test_expression と比較される subquery または expression で NULL 値が返された場合は、すべて UNKNOWN が返されます。IN または NOT IN と共に NULL 値を使用すると、予期しない結果が生じる可能性があります。 |
例
A. OR と IN を比較する
次の例では、デザイン エンジニア、ツール デザイナ、またはマーケティング アシスタントのいずれかである従業員の名前の一覧を選択します。
USE AdventureWorks;
GO
SELECT FirstName, LastName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
WHERE e.Title = 'Design Engineer'
OR e.Title = 'Tool Designer'
OR e.Title = 'Marketing Assistant';
GO
IN を使用しても同じ結果が得られます。
USE AdventureWorks;
GO
SELECT FirstName, LastName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
WHERE e.Title IN ('Design Engineer', 'Tool Designer', 'Marketing Assistant');
GO
以下に各クエリの結果セットを示します。
FirstName LastName Title
--------- --------- ---------------------
Sharon Salavaria Design Engineer
Gail Erickson Design Engineer
Jossef Goldberg Design Engineer
Janice Galvin Tool Designer
Thierry D'Hers Tool Designer
Wanida Benshoof Marketing Assistant
Kevin Brown Marketing Assistant
Mary Dempsey Marketing Assistant
(8 row(s) affected)
B. IN とサブクエリを使用する
次の例では、年間の販売ノルマが 250,000 ドルを超えるすべての販売員の ID が SalesPerson
テーブルから検索され、次に、Employee
テーブルから、SELECT
サブクエリの結果に一致する EmployeeID
の従業員の名前がすべて選択されます。
USE AdventureWorks;
GO
SELECT FirstName, LastName
FROM Person.Contact AS c
JOIN HumanResources.Employee AS e
ON e.ContactID = c.ContactID
WHERE EmployeeID IN
(SELECT SalesPersonID
FROM Sales.SalesPerson
WHERE SalesQuota > 250000);
GO
以下に結果セットを示します。
FirstName LastName
--------- --------
Tsvi Reiter
Michael Blythe
Tete Mensa-Annan
(3 row(s) affected)
C. NOT IN とサブクエリを使用する
次の例では、販売ノルマが 250,000 ドル以下の販売員が検索されます。NOT IN
は、値の一覧に一致する項目がない販売員を検索します。
USE AdventureWorks
GO
SELECT FirstName, LastName
FROM Person.Contact AS c
JOIN HumanResources.Employee AS e
ON e.ContactID = c.ContactID
WHERE EmployeeID NOT IN
(SELECT SalesPersonID
FROM Sales.SalesPerson
WHERE SalesQuota > 250000)
GO
参照
関連項目
CASE (Transact-SQL)
式 (Transact-SQL)
関数 (Transact-SQL)
演算子 (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)
ALL (Transact-SQL)
SOME | ANY (Transact-SQL)
その他の技術情報
サブクエリの基礎
IN で導かれるサブクエリ
ANY、SOME、または ALL で修飾された比較演算子
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2005 年 12 月 5 日 |
|