IN (Transact-SQL)
SQL Server 2005
更新:
2005 年 12 月 5 日
判斷指定的值是否符合子查詢或清單中的任何值。
- test_expression
-
這是任何有效的運算式。
- subquery
-
這是有單一資料行結果集的子查詢。這個資料行必須有 test_expression 的相同資料類型。
- expression[ ,... n ]
-
這是要進行相符測試的運算式清單。所有運算式都必須是 test_expression 的相同類型。
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
下列範例在 SalesPerson 資料表中,針對年度銷售配額超出 $250,000 之員工來尋找銷售人員的所有識別碼,之後,再從 Employee 資料表中,選取 EmployeeID 符合 SELECT 子查詢結果的所有員工姓名。
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
社群新增項目
新增
顯示:

