確定給定的值是否與子查詢或列表中的值相匹配。
test_expression [ NOT ] IN
(
subquery
| expression [ ,...n ]
)
test_expression
是任何有效的 Microsoft® SQL Server™ 表達式。
subquery
是包含某列結果集的子查詢。該列必須與 test_expression 有相同的數(shù)據(jù)類型。
expression [,...n]
一個表達式列表,用來測試是否匹配。所有的表達式必須和 test_expression 具有相同的類型。
布爾型
如果 test_expression 與 subquery 返回的任何值相等,或與逗號分隔的列表中的任何 expression 相等,那么結果值就為 TRUE。否則,結果值為 FALSE。
使用 NOT IN 對返回值取反。
下面的示例選擇名稱和州的列表,列表中列出所有居住在加利福尼亞、印地安納或馬里蘭州的作者。
USE pubs
SELECT au_lname, state
FROM authors
WHERE state = 'CA' OR state = 'IN' OR state = 'MD'
但是,也可以使用 IN 獲得相同的結果:
USE pubs
SELECT au_lname, state
FROM authors
WHERE state IN ('CA', 'IN', 'MD')
以下是上面任一查詢的結果集:
au_lname state
-------- -----
White CA
Green CA
Carson CA
O'Leary CA
Straight CA
Bennet CA
Dull CA
Gringlesby CA
Locksley CA
Yokomoto CA
DeFrance IN
Stringer CA
MacFeather CA
Karsen CA
Panteley MD
Hunter CA
McBadden CA
(17 row(s) affected)
下面的示例在 titleauthor 表中查找從任一種書得到的版稅少于 50% 的所有作者的 au_ids,然后從 authors 表中選擇 au_ids 與 titleauthor 查詢結果匹配的所有作者的姓名。結果顯示有一些作者屬于得到的版稅少于 50% 的一類。
USE pubs
SELECT au_lname, au_fname
FROM authors
WHERE au_id IN
(SELECT au_id
FROM titleauthor
WHERE royaltyper < 50)
下面是結果集:
au_lname au_fname
---------------------------------------- --------------------
Green Marjorie
O'Leary Michael
Gringlesby Burt
Yokomoto Akiko
MacFeather Stearns
Ringer Anne
(6 row(s) affected)
NOT IN 將找到那些與值列表中的項目不匹配的作者。下面的示例查找至少有一種書取得不少于 50% 的版稅的作者姓名:
USE pubs
SELECT au_lname, au_fname
FROM authors
WHERE au_id NOT IN
(SELECT au_id
FROM titleauthor
WHERE royaltyper < 50)
下面是結果集:
au_lname au_fname
---------------------------------------- --------------------
White Johnson
Carson Cheryl
Straight Dean
Smith Meander
Bennet Abraham
Dull Ann
Locksley Charlene
Greene Morningstar
Blotchet-Halls Reginald
del Castillo Innes
DeFrance Michel
Stringer Dirk
Karsen Livia
Panteley Sylvia
Hunter Sheryl
McBadden Heather
Ringer Albert
(17 row(s) affected)
相關文章