IN (Transact-SQL)

Określa, czy określona wartość jest zgodny z dowolną wartość w podkwerendzie lub na liście.

Topic link iconKonwencje składni języka Transact-SQL

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.