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

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 17:54:02433Durchsuche

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>

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>

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>

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!

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