Skip to content
Natuurondernemer
    Dezember 28, 2020 by admin

    IN (Transact-SQL)

    IN (Transact-SQL)
    Dezember 28, 2020 by admin
    • 29.08.2016
    • 4 Minuten zu lesen
      • c
      • j
      • r
      • M
      • i
      • +5

    Gilt für: JaSQL Server (alle unterstützten Versionen) JaAzure SQL Datenbank JaAzure SQL Managed Instance jaAzure Synapse Analytics jaParallel Data Warehouse

    Ermittelt, ob ein angegebener Wert mit einem beliebigen Wert in einer Subquery oder einer Liste übereinstimmt.

    Themenverknüpfungssymbol Transact-SQL-Syntaxkonventionen

    Syntax

    test_expression IN ( subquery | expression ) 

    Hinweis

    Um die Transact-SQL-Syntax für SQL Server 2014 und früher zu sehen, lesen Sie die Dokumentation zu früheren Versionen.

    Argumente

    test_expression
    Ist ein beliebiger gültiger Ausdruck.

    subquery
    Ist eine Subquery, die eine Ergebnismenge von einer Spalte hat. Diese Spalte muss den gleichen Datentyp wie test_expression haben.

    expression
    Ist eine Liste von Ausdrücken, die auf eine Übereinstimmung getestet werden sollen. Alle Ausdrücke müssen vom gleichen Typ wie test_expression sein.

    Ergebnistypen

    Boolean

    Ergebniswert

    Wenn der Wert von test_expression gleich einem von subquery zurückgegebenen Wert oder gleich einem Ausdruck aus der kommagetrennten Liste ist, ist der Ergebniswert TRUE; andernfalls ist der Ergebniswert FALSE.

    Die Verwendung von NOT IN negiert den Wert der Unterabfrage oder des Ausdrucks.

    Achtung

    Alle von der Unterabfrage oder dem Ausdruck zurückgegebenen Nullwerte, die mit IN oder NOT IN mit test_expression verglichen werden, geben UNKNOWN zurück. Die Verwendung von Null-Werten in Verbindung mit IN oder NOT IN kann zu unerwarteten Ergebnissen führen.

    Bemerkungen

    Eine extrem große Anzahl von Werten (viele Tausend durch Kommas getrennte Werte) innerhalb der Klammern in einer IN-Klausel einzuschließen, kann Ressourcen verbrauchen und Fehler 8623 oder 8632 zurückgeben. Um dieses Problem zu umgehen, speichern Sie die Elemente der IN-Liste in einer Tabelle und verwenden Sie eine SELECT-Subquery innerhalb einer IN-Klausel.

    Fehler 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.

    Fehler 8632:

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

    Beispiele

    A. Vergleich von OR und IN

    Das folgende Beispiel selektiert eine Liste mit den Namen von Mitarbeitern, die Konstrukteure, Werkzeugkonstrukteure oder Marketingassistenten sind.

    -- 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 

    Sie erhalten jedoch die gleichen Ergebnisse, wenn Sie IN verwenden.

    -- 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 ist die Ergebnismenge aus beiden Abfragen.

    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. Verwendung von IN mit einer Unterabfrage

    Das folgende Beispiel findet alle IDs für die Verkäufer in der Tabelle SalesPerson für Mitarbeiter, die eine Verkaufsquote von mehr als 250.000 $ für das Jahr haben, und wählt dann aus der Tabelle Employee die Namen aller Mitarbeiter aus, bei denen EmployeeID die Ergebnisse aus der Unterabfrage SELECT übereinstimmen.

    -- 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 ist die Ergebnismenge.

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

    C. Verwendung von NOT IN mit einer Subquery

    Das folgende Beispiel findet die Verkäufer, deren Quote nicht größer als 250.000 $ ist. NOT IN findet die Verkäufer, die nicht mit den Elementen in der Werteliste übereinstimmen.

    -- 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 

    Beispiele: Azure Synapse Analytics und Parallel Data Warehouse

    D. Verwenden von IN und NOT IN

    Das folgende Beispiel findet alle Einträge in der Tabelle FactInternetSales, die mit SalesReasonKey Werten in der Tabelle DimSalesReason übereinstimmen.

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

    Das folgende Beispiel findet alle Einträge in der Tabelle FactInternetSalesReason, die nicht mit SalesReasonKey-Werten in der Tabelle DimSalesReason übereinstimmen.

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

    E. Verwenden von IN mit einer Ausdrucksliste

    Das folgende Beispiel findet alle IDs für die Verkäufer in der Tabelle DimEmployee für Mitarbeiter, deren Vorname entweder Mike oder Michael ist.

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

    Siehe auch

    CASE (Transact-SQL)
    Ausdrücke (Transact-SQL)
    Built-in-Funktionen (Transact-SQL)
    Operatoren (Transact-SQL)
    SELECT (Transact-SQL)
    WHERE (Transact-SQL)
    ALL (Transact-SQL)
    SOME | ANY (Transact-SQL)

    Previous articleMaster WordPress-Benutzerrollen und -FähigkeitenNext article WMFE-FM

    Schreibe einen Kommentar Antworten abbrechen

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

    Neueste Beiträge

    • Sich selbst (und andere…) in Jahrbüchern online finden
    • Wie man einen Bitcoin-ASIC-Miner einrichtet
    • Chris Martin feiert Geburtstag in Disneyland mit Dakota Johnson
    • Was ist ein Superfund-Standort?
    • Angelköder-Blutwürmer haben Bienenstiche
    • Echolalie: Die Fakten jenseits von „Papageiensprache“, Skripting und Echoing
    • Herr der Fliegen Zitate
    • A Beginner’s Guide to Pegging
    • 42 Healthy Crockpot Soup Recipes
    • 3 überraschende Risiken einer schlechten Körperhaltung

    Archive

    • April 2021
    • März 2021
    • Februar 2021
    • Januar 2021
    • Dezember 2020
    • November 2020
    • Oktober 2020
    • September 2020
    • August 2020
    • Juli 2020
    • Juni 2020
    • Mai 2020
    • April 2020
    • DeutschDeutsch
    • NederlandsNederlands
    • EspañolEspañol
    • FrançaisFrançais
    • PortuguêsPortuguês
    • ItalianoItaliano
    • PolskiPolski

    Meta

    • Anmelden
    • Feed der Einträge
    • Kommentare-Feed
    • WordPress.org
    Posterity WordPress Theme