Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum gibt meine MySQL-WHERE-IN()-Abfrage keine Datensätze mit mehreren Werten zurück?

Mary-Kate Olsen
Freigeben: 2024-11-04 17:54:02
Original
402 Leute haben es durchsucht

Why Doesn't My MySQL WHERE IN () Query Return Records with Multiple Values?

MySQL WHERE IN ()-Abfrage gibt nicht die erwarteten Ergebnisse zurück

In MySQL wird die WHERE IN()-Anweisung häufig zum Abrufen von Datensätzen verwendet auf einer Menge spezifizierter Werte. Manchmal stoßen Benutzer jedoch auf Situationen, in denen erwartete Zeilen nicht in den Ergebnissen zurückgegeben werden.

Problembeschreibung:

Ein Benutzer hat eine Abfrage, die alle Zeilen aus der „Tabelle“ auswählt " Tabelle, in der sich die Spalte „id“ in einer angegebenen Liste befindet:

<code class="sql">SELECT * FROM table WHERE id IN (1,2,3,4);</code>
Nach dem Login kopieren

Der Benutzer hat festgestellt, dass ein Datensatz nicht zurückgegeben wird, wenn er mehrere „id“-Werte hat (z. B. sowohl 1 als auch 3). in den Ergebnissen.

Das Problem verstehen:

Die WHERE IN()-Anweisung übersetzt die bereitgestellte Werteliste in eine Reihe von ODER-Operatoren:

<code class="sql">SELECT * FROM table WHERE id='1' or id='2' or id='3' or id='4';</code>
Nach dem Login kopieren

Das bedeutet, dass nur Zeilen zurückgegeben werden, in denen die Spalte „id“ genau mit einem der angegebenen Werte übereinstimmt.

Lösung 1: Verwendung von FIND_IN_SET

Eins Der Ansatz zur Überwindung dieser Einschränkung besteht darin, die Datenstruktur zu ändern, indem der Datentyp der Spalte „id“ in SET geändert wird. Dadurch kann die Spalte mehrere Werte speichern.

Mit der Funktion FIND_IN_SET können Sie dann nach Datensätzen suchen, in denen ein bestimmter Wert im SET vorhanden ist:

<code class="sql">SELECT * FROM table WHERE FIND_IN_SET('1', id);</code>
Nach dem Login kopieren

Dies ist jedoch wichtig Beachten Sie, dass diese Lösung zusätzliche Komplexität mit sich bringt und möglicherweise nicht für alle Szenarien geeignet ist.

Das obige ist der detaillierte Inhalt vonWarum gibt meine MySQL-WHERE-IN()-Abfrage keine Datensätze mit mehreren Werten zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage