Aracılığıyla paylaş


IN (Transact-SQL)

Belirtilen değer, herhangi bir alt sorgu veya bir liste değeri eşleşip eşleşmediğini belirler.

Topic link iconTransact-SQL sözdizimi kuralları

test_expression [ NOT ] IN 
        ( subquery | expression [ ,...n ]
        ) 

Bağımsız değişkenler

  • test_expression
    Herhangi bir geçerli mi ifade.

  • subquery
    Alt sorgu sonucu olan iş küme bir sütun.Bu sütun, aynı veri olarak türü olmalıdır test_expression.

  • expression[ ,... n ]
    Bir eşleşme sınamak için bir ifadeler listesinde belirtilir.Tüm ifadelerin aynı türde olması gerekir test_expression.

Sonuç türleri

Boolean

Sonuç değeri

Değeri test_expression döndürülen herhangi bir değere eşittir subquery veya herhangi bir eşittir expression virgülle ayrılmış) listesinde, sonuç değeri DOğRU ise; aksi halde, sonuç değeri YANLıŞ.

NOT IN kullanarak olumsuzlar subquery değer veya expression.

Uyarı

Döndürülen null değerleri subquery veya expression için karşılaştırma test_expression IN kullanarak veya NOT IN BILINMIYOR. Null'nı kullanarak, birlikte IN ile değerleri veya NOT IN beklenmeyen sonuçlar verebilir.

Remarks

Bir çok sayıda değerler (çok sayıda binler basamağı) bir IN yan tümce içeren kaynaklarını tüketen ve hata 8623 oluşuyor veya 8632 dönün.Bu soruna geçici bir çözüm bulmak için , tablo IN listesindeki öğeleri depolar.

Hata 8623 oluşuyor:

Query processor iç kaynakları yetersiz çalıştırdığınızda ve bir sorgu planı oluşturmak.Ender olayıdır ve yalnızca, son derece karmaşık bir sorgu veya çok sayıda tablo veya bölüm başvuran sorgular için bekleniyor.Lütfen sorguyu basitleştirin.Size bu iletiyi yanlışlıkla aldığınıza inanıyorsanız, daha fazla bilgi için Müşteri Destek Hizmetleri'ne başvurun.

Hata 8632 oluşuyor:

Iç hata: Bir ifade Hizmetleri sınıra ulaşıldı. Sorgunuzdaki olabilecek karmaşık ifadeler için görünür ve bunları basitleştirmek deneyin.

Örnekler

C.Karşılaştırma VEYA ve IN

Aşağıdaki örnek, tasarım mühendislerinin, araç tasarımcıları veya pazarlama Yardımcılar çalışanları adlarının bir listesini seçer.

Ancak, ın'dir kullanarak aynı sonuçlar almak

Sonuç ya da sorgudan kümesini olur.

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.Alt sorgu ile kullanarak IN

Aşağıdaki örnek satıcıların tüm kimlikler bulur SalesPerson Tablo $ 250,000 büyük satış kotası yılı varsa ve daha sonra seçer çalışanları için Employee Tüm çalışanların adlarını tablo yeri EmployeeID sonuçlar uyan SELECT alt sorgu.

Here is the result set.

FirstName   LastName                                           
---------   -------- 
Tsvi         Reiter                                            
Michael      Blythe                                            
Tete         Mensa-Annan                                       

(3 row(s) affected)

c.NOT IN ile bir alt sorgu kullanma

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.