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!