Articles

MySQL IN

Zusammenfassung: In diesem Tutorial lernen Sie, wie Sie den MySQL IN-Operator verwenden, um festzustellen, ob ein angegebener Wert mit einem beliebigen Wert in einer Liste oder einer Subquery übereinstimmt.

Einführung in den MySQL IN-Operator

Mit dem IN-Operator können Sie feststellen, ob ein angegebener Wert mit einem beliebigen Wert in einer Menge von Werten oder einer Unterabfrage übereinstimmt.

Das Folgende illustriert die Syntax des IN-Operators:

SELECT column1,column2,...FROM table_nameWHERE (expr|column_1) IN ('value1','value2',...);
Code language: SQL (Structured Query Language) (sql)

Lassen Sie uns die Abfrage genauer untersuchen:

  • Verwenden Sie ein column oder einen Ausdruck ( expr ) mit dem IN-Operator in der WHERE-Klausel.
  • Trennen Sie die Werte in der Liste durch Kommata (,).

Der IN-Operator gibt 1 zurück, wenn der Wert des column_1 oder das Ergebnis des expr-Ausdrucks gleich einem beliebigen Wert in der Liste ist, andernfalls gibt er 0 zurück.

Wenn die Werte in der Liste alle Konstanten sind, führt MySQL die folgenden Schritte durch:

  • Erst werden die Werte basierend auf dem Typ des column_1 oder dem Ergebnis des expr-Ausdrucks ausgewertet.
  • Zweitens: Sortieren Sie die Werte.
  • Drittens: Suchen Sie den Wert mithilfe des binären Suchalgorithmus. Daher führt eine Abfrage, die den IN-Operator mit einer Liste von Konstanten verwendet, sehr schnell aus.

Beachten Sie, dass der Operator INNULL zurückgibt, wenn der expr oder irgendein Wert in der Liste NULL ist.

Sie können den IN-Operator mit dem NOT-Operator kombinieren, um festzustellen, ob ein Wert mit keinem Wert in einer Liste oder einer Subquery übereinstimmt. Und Sie können den IN-Operator auch in der WHERE-Klausel anderer Anweisungen wie UPDATE und DELETE verwenden.

MySQL IN-Operator Beispiele

Lassen Sie uns mit einigen Beispielen die Verwendung des IN Operators üben. Sehen Sie sich die folgende offices Tabelle aus der Beispieldatenbank an:

Bürotabelle

Wenn Sie die Büros in den USA und Frankreich befinden, können Sie den IN-Operator wie die folgende Abfrage verwenden:

SELECT officeCode, city, phone, countryFROM officesWHERE country IN ('USA' , 'France');
Code language: SQL (Structured Query Language) (sql)

Ausprobieren

MySQL IN-Länderliste Beispiel
Das gleiche Ergebnis können Sie mit dem OR-Operator als folgende Abfrage erreichen:

SELECT officeCode, city, phoneFROM officesWHERE country = 'USA' OR country = 'France';
Code language: SQL (Structured Query Language) (sql)

Versuchen Sie es

Falls die Liste viele Werte hat, müssen Sie eine sehr lange Anweisung mit mehreren OR-Operatoren konstruieren. Mit dem IN-Operator können Sie die Abfrage daher kürzen und lesbarer machen.

Um Büros zu erhalten, die sich nicht in den USA und Frankreich befinden, verwenden Sie NOT IN in der WHERE-Klausel wie folgt:

SELECT officeCode, city, phoneFROM officesWHERE country NOT IN ('USA' , 'France');
Code language: SQL (Structured Query Language) (sql)

Ausprobieren

MySQL NOT IN Büros Beispiel

MySQL IN mit einer Subquery verwenden

Der IN-Operator wird oft mit einer Subquery verwendet. Anstatt eine Liste von literalen Werten zu liefern, holt sich die Subquery eine Liste von Werten aus einer oder mehreren Tabellen und verwendet sie als Eingabewerte des IN-Operators.

Werfen wir einen Blick auf die orders und orderDetails Tabellen aus der Beispieldatenbank:

Bestellungen, Tabelle Bestelldetails

Zum Beispiel, wenn Sie die Bestellungen finden wollen, deren Gesamtwerte größer sind als 60,000, verwenden Sie den Operator IN wie in der folgenden Abfrage gezeigt:

SELECT orderNumber, customerNumber, status, shippedDateFROM ordersWHERE orderNumber IN( SELECT orderNumber FROM orderDetails GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 60000);
Code language: SQL (Structured Query Language) (sql)

Ausprobieren

MySQL IN mit Subquery-Beispiel

Die gesamte obige Abfrage kann in zwei separate Abfragen zerlegt werden.

Zunächst gibt die Subquery eine Liste von Bestellnummern zurück, deren Werte größer sind als 60,000 unter Verwendung der GROUP BY und HAVING Klauseln:

SELECT orderNumberFROM orderDetailsGROUP BY orderNumberHAVING SUM(quantityOrdered * priceEach) > 60000;
Code language: SQL (Structured Query Language) (sql)

Ausprobieren

MySQL IN Unterabfrage

Zweitens, verwendet die äußere Abfrage den IN-Operator in der WHERE-Klausel, um Daten aus der orders-Tabelle zu erhalten:

SELECT orderNumber, customerNumber, status, shippedDateFROM ordersWHERE orderNumber IN (10165,10287,10310);
Code language: SQL (Structured Query Language) (sql)

Ausprobieren

In diesem Tutorial haben Sie gelernt, wie man den MySQL IN-Operator verwendet, um festzustellen, ob ein Wert mit einem beliebigen Wert in einer Liste von Werten übereinstimmt.

  • War dieses Tutorial hilfreich?
  • JaNein

Schreibe einen Kommentar

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