Skip to content
Natuurondernemer
    december 28, 2020 by admin

    IN (Transact-SQL)

    IN (Transact-SQL)
    december 28, 2020 by admin
    • 08/29/2016
    • 4 minuten om te lezen
      • c
      • j
      • r
      • M
      • i
      • +5

    eldt voor:JaSQL Server (alle ondersteunde versies)JaAzure SQL DatabaseJaAzure SQL Managed InstancejaAzure Synapse AnalyticsjaParallel Data Warehouse

    Bepaalt of een opgegeven waarde overeenkomt met een willekeurige waarde in een subquery of een lijst.

    Topic link icon Transact-SQL Syntax Conventions

    Syntax

    test_expression IN ( subquery | expression ) 

    Note

    Om de Transact-SQL syntax voor SQL Server 2014 en eerder te bekijken, zie documentatie over eerdere versies.

    Argumenten

    test_expression
    Is elke geldige expressie.

    subquery
    Is een subquery die een result set van één kolom heeft. Deze kolom moet hetzelfde gegevenstype hebben als test_expression.

    expression
    Is een lijst van expressies om te testen op een overeenkomst. Alle expressies moeten van hetzelfde type zijn als test_expression.

    Resulttypen

    Boolean

    Resultwaarde

    Als de waarde van test_expression gelijk is aan een waarde die door subquery wordt geretourneerd of gelijk is aan een expressie uit de door komma’s gescheiden lijst, is de resultaatwaarde TRUE; anders is de resultaatwaarde FALSE.

    Het gebruik van NOT IN ontkent de waarde van de subquery of de expressie.

    Voorzichtigheid

    Alle null-waarden die door een subquery of expressie worden geretourneerd en die met behulp van IN of NOT IN met test_expression worden vergeleken, leveren UNKNOWN op. Het gebruik van null-waarden in combinatie met IN of NOT IN kan onverwachte resultaten opleveren.

    Opmerkingen

    Het expliciet opnemen van een extreem groot aantal waarden (vele duizenden waarden gescheiden door komma’s) binnen de haakjes, in een IN-clausule kan resources opslokken en fouten 8623 of 8632 teruggeven. Om dit probleem te omzeilen, slaat u de items in de IN-lijst op in een tabel, en gebruikt u een SELECT subquery binnen een IN-clausule.

    Fout 8623:

    The query processor ran out of internal resources and could not produce a query plan. This is a rare event and only expected for extremely complex queries or queries that reference a very large number of tables or partitions. Please simplify the query. If you believe you have received this message in error, contact Customer Support Services for more information.

    Fout 8632:

    Internal error: An expression services limit has been reached. Please look for potentially complex expressions in your query, and try to simplify them.

    Voorbeelden

    A. OR en IN vergelijken

    Het volgende voorbeeld selecteert een lijst met de namen van werknemers die ontwerpingenieurs, werktuigontwerpers of marketingassistenten zijn.

    -- Uses AdventureWorks SELECT p.FirstName, p.LastName, e.JobTitle FROM Person.Person AS p JOIN HumanResources.Employee AS e ON p.BusinessEntityID = e.BusinessEntityID WHERE e.JobTitle = 'Design Engineer' OR e.JobTitle = 'Tool Designer' OR e.JobTitle = 'Marketing Assistant'; GO 

    Hoewel u dezelfde resultaten verkrijgt door IN te gebruiken.

    -- Uses AdventureWorks SELECT p.FirstName, p.LastName, e.JobTitle FROM Person.Person AS p JOIN HumanResources.Employee AS e ON p.BusinessEntityID = e.BusinessEntityID WHERE e.JobTitle IN ('Design Engineer', 'Tool Designer', 'Marketing Assistant'); GO 

    Hier is de resultatenverzameling van beide query’s.

    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 gebruiken met een subquery

    Het volgende voorbeeld vindt alle ID’s voor de verkopers in de tabel SalesPerson voor werknemers die een verkoopquotum hebben dat groter is dan $250.000 voor het jaar, en selecteert vervolgens uit de Employee tabel de namen van alle werknemers waar EmployeeID die overeenkomen met de resultaten uit de SELECT subquery.

    -- Uses AdventureWorks SELECT p.FirstName, p.LastName FROM Person.Person AS p JOIN Sales.SalesPerson AS sp ON p.BusinessEntityID = sp.BusinessEntityID WHERE p.BusinessEntityID IN (SELECT BusinessEntityID FROM Sales.SalesPerson WHERE SalesQuota > 250000); GO 

    Hier is de resultatenset.

    FirstName LastName --------- -------- Tsvi Reiter Michael Blythe Tete Mensa-Annan (3 row(s) affected) 

    C. NOT IN gebruiken met een subquery

    Het volgende voorbeeld vindt de verkopers die geen quotum groter dan $250.000 hebben. NOT IN vindt de verkopers die niet overeenkomen met de items in de waardenlijst.

    -- Uses AdventureWorks SELECT p.FirstName, p.LastName FROM Person.Person AS p JOIN Sales.SalesPerson AS sp ON p.BusinessEntityID = sp.BusinessEntityID WHERE p.BusinessEntityID NOT IN (SELECT BusinessEntityID FROM Sales.SalesPerson WHERE SalesQuota > 250000); GO 

    Voorbeelden: Azure Synapse Analytics en Parallel Data Warehouse

    D. IN en NIET IN gebruiken

    Het volgende voorbeeld vindt alle entries in de FactInternetSales tabel die overeenkomen met SalesReasonKey waarden in de DimSalesReason tabel.

    -- Uses AdventureWorks SELECT * FROM FactInternetSalesReason WHERE SalesReasonKey IN (SELECT SalesReasonKey FROM DimSalesReason); 

    Het volgende voorbeeld vindt alle items in de FactInternetSalesReason tabel die niet overeenkomen met SalesReasonKey waarden in de DimSalesReason tabel.

    -- Uses AdventureWorks SELECT * FROM FactInternetSalesReason WHERE SalesReasonKey NOT IN (SELECT SalesReasonKey FROM DimSalesReason); 

    E. IN gebruiken met een expressielijst

    Het volgende voorbeeld vindt alle ID’s voor de verkopers in de tabel DimEmployee voor werknemers die een voornaam hebben die Mike of Michael is.

    -- Uses AdventureWorks SELECT FirstName, LastName FROM DimEmployee WHERE FirstName IN ('Mike', 'Michael'); 

    Zie ook

    CASE (Transact-SQL)
    Expressies (Transact-SQL)
    Built-in Functies (Transact-SQL)
    Operators (Transact-SQL)
    SELECT (Transact-SQL)
    WHERE (Transact-SQL)
    ALL (Transact-SQL)
    SOME | ANY (Transact-SQL)

    Previous articleMaster WordPress Gebruikersrollen en MogelijkhedenNext article WMFE-FM

    Geef een reactie Antwoord annuleren

    Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

    Meest recente berichten

    • Jezelf (en anderen…) vinden in jaarboeken online
    • Hoe zet u een bitcoin ASIC miner op
    • Wat is een Superfund-locatie?
    • Bloedwormen met visaas hebben bijensteek
    • Echolalie: De feiten voorbij “papegaaienpraat”, scripting, en echo
    • Lord of the Flies Cites
    • 42 Gezonde Crockpot Soep Recepten
    • 3 verrassende risico’s van een slechte houding
    • Vrouwelijke Betta Vis
    • Tina Fey Biografie

    Archief

    • april 2021
    • maart 2021
    • februari 2021
    • januari 2021
    • december 2020
    • november 2020
    • oktober 2020
    • september 2020
    • augustus 2020
    • juli 2020
    • juni 2020
    • mei 2020
    • april 2020
    • DeutschDeutsch
    • NederlandsNederlands
    • EspañolEspañol
    • FrançaisFrançais
    • PortuguêsPortuguês
    • ItalianoItaliano
    • PolskiPolski

    Meta

    • Inloggen
    • Berichten feed
    • Reacties feed
    • WordPress.org
    Posterity WordPress Theme