IN (Transact-SQL)
Określa, czy określona wartość jest zgodny z dowolną wartość w podkwerendzie lub na liście.
test_expression [ NOT ] IN
( subquery | expression [ ,...n ]
)
Argumenty
test_expression
Jest ważne w każdym wyrażenie.subquery
Czy Podkwerenda ma zestaw wyników o jedną kolumna.W tej kolumnie musi mieć dane tego samego typu jak test_expression.expression[ ,... n ]
Jest to lista wyrażeń w celu dopasowania.Wszystkie wyrażenia musi być tego samego typu co test_expression.
Typy wynik
Boolean
Wartość wyniku
Jeśli wartość test_expression jest równe żadnej wartości zwracane przez subquery lub jest równa jednej expression z listy przecinkami wartość wyniku ma wartość logiczną PRAWDA; w przeciwnym razie wartości wyników ma wartość FAŁSZ.
Negacja przy użyciu NOT IN subquery wartość lub expression.
Ostrzeżenie
Wszystkie wartości null, zwracane przez subquery lub expression porównywane z test_expression W użyciu lub nie w zwracać nieokreślona. Za pomocą wartości zerowej wartości razem z IN lub NOT IN może wygenerować nieoczekiwane wyniki.
Remarks
Bardzo duża liczba wartości (wielu tysięcy) w tym w klauzula IN można zajmują zasoby i zwracać błędy 8623 lub 8632.W celu obejścia tego problemu należy zapisać elementów na liście w tabela.
Błąd 8623:
Procesor kwerend wyczerpały się zasoby wewnętrzne i może nie dawać planu kwerend.Jest rzadko zdarzenie, oczekiwano tylko bardzo skomplikowanych kwerend lub kwerend, które odwołują się do bardzo dużej liczby tabel lub partycji.Proszę uprościć kwerendy.Jeśli uważasz, że otrzymali ten komunikat błędu, należy skontaktować się z pomocą techniczną Aby uzyskać więcej informacji.
Błąd 8632:
Błąd wewnętrzny: Został osiągnięty limit usług wyrażenie. Poszukaj potencjalnie złożone wyrażenia w kwerendzie i spróbuj uprościć ich.
Przykłady
A.Porównanie OR i IN
W poniższym przykładzie następuje wybranie listy nazw pracowników, którzy inżynierów projektu, projektanci narzędzie lub obrotu Asystentów.
Jednak można pobrać te same wyniki, używając IN.
Oto każdej kwerendy zestaw wyników.
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.NA korzystanie z podkwerenda
Następujący przykład wyszukuje wszystkie identyfikatory dla sprzedawców w SalesPerson Tabela dla pracowników, którzy mają normy sprzedaży większe niż 250 000 zł w roku, a następnie wybiera z Employee Tabela nazw wszystkich pracowników, gdzie EmployeeID pasujących wyniki z SELECT podkwerenda.
Here is the result set.
FirstName LastName
--------- --------
Tsvi Reiter
Michael Blythe
Tete Mensa-Annan
(3 row(s) affected)
C.Korzystanie z podkwerenda NOT IN
The following example finds the salespersons who do not have a quota greater than $250,000.NOT IN finds the salespersons who do not match the items in the values list.
See Also