Heim >Datenbank >MySQL-Tutorial >Wie frage ich mehrere Spalten effizient mit der SQL IN-Klausel ab?

Wie frage ich mehrere Spalten effizient mit der SQL IN-Klausel ab?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-28 12:53:16330Durchsuche

How to Efficiently Query Multiple Columns with the SQL IN Clause?

SQL IN-Klausel für mehrere Spalten

Wenn Sie eine Abfrage für eine Tabelle basierend auf mehreren Spalten mithilfe der IN-Klausel durchführen, wird das Erstellen einer einzelnen Abfrage mit mehreren ODER-Bedingungen mühsam . Stattdessen kann man die folgenden Ansätze nutzen:

Verwendung der Tupel-IN-Klausel

Die direkteste Lösung ist die Verwendung der Tupel-Version der IN-Klausel. Wenn beispielsweise die Tabelle „Benutzer“ mit den Spalten „Vorname“, „Nachname“ und „Stadt“ vorhanden ist, würde die Abfrage zum Abrufen von Städten für eine Liste von (Vorname, Nachname)-Tupeln wie folgt lauten:

SELECT City
FROM User
WHERE (firstName, lastName) IN (('a', 'b'), ('c', 'd'));

Erstellen einer Staging-Tabelle

Eine andere Möglichkeit besteht darin, eine Staging-Tabelle mit allen möglichen Kombinationen (Vorname, Nachname) zu erstellen und dann einen Join zwischen dieser Tabelle und der Benutzertabelle durchzuführen. Diese Methode erfordert jedoch zusätzliche Einrichtung und Wartung, was für große Datenmengen möglicherweise nicht ideal ist.

Empfehlungen

Für allgemeine Szenarien wird der Tupel-IN-Klausel-Ansatz aufgrund seiner Einfachheit und Flexibilität bevorzugt. Dadurch entfällt die Notwendigkeit einer komplexen Abfrageerstellung oder zusätzlicher Tabellen. Wenn die Suchdaten jedoch außerhalb der Datenbank gespeichert werden, können alternative Methoden wie Joins oder Unterabfragen erforderlich sein.

Das obige ist der detaillierte Inhalt vonWie frage ich mehrere Spalten effizient mit der SQL IN-Klausel ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn