Heim >Datenbank >MySQL-Tutorial >Warum fehlen in meiner MySQL-WHERE-IN-Abfrage Zeilen mit mehreren übereinstimmenden Werten?
MySQL WHERE IN-Abfrage für mehrere übereinstimmende Werte
Beim Versuch, Daten aus einer MySQL-Tabelle mithilfe der WHERE IN()-Klausel abzurufen, um sie abzugleichen Bei mehreren Werten kann es zu einem Problem kommen, bei dem Zeilen mit mehreren übereinstimmenden Werten nicht zurückgegeben werden. Dieses Verhalten kann verwirrend sein, da Sie davon ausgehen können, dass alle Zeilen mit einem der angegebenen Werte zurückgegeben werden.
Erklärung
Die WHERE IN()-Klausel wird verwendet Wählen Sie Zeilen basierend darauf aus, ob ihre angegebenen Spaltenwerte mit einem der angegebenen Werte in den Klammern übereinstimmen. Wenn eine Zeile jedoch mehrere übereinstimmende Werte aufweist, beispielsweise sowohl 1 als auch 3, wird die Abfrage in eine Reihe von ODER-Bedingungen übersetzt:
<code class="sql">SELECT * FROM table WHERE id='1' OR id='2' OR id='3' OR id='4';</code>
Das bedeutet, dass nur Zeilen, die genau mit einem der angegebenen Werte übereinstimmen, übereinstimmen zurückgegeben werden.
Lösung
Um dieses Problem zu beheben, können Sie die folgenden Methoden in Betracht ziehen:
Methode 1: Verwenden des SET-Datentyps
Durch Ändern des Datentyps der ID-Spalte in SET können Sie mehrere Werte in einer einzigen Zeile speichern. Sie können dann die Funktion FIND_IN_SET() verwenden, um nach Zeilen abzufragen, die bestimmte Werte enthalten:
<code class="sql">SELECT * FROM table WHERE FIND_IN_SET('1', id);</code>
Diese Abfrage gibt alle Zeilen zurück, in denen die ID-Spalte den Wert „1“ enthält, unabhängig davon, ob andere Werte vorhanden sind Werte.
Methode 2: Verwenden von UNION oder Unterabfrage
Ein alternativer Ansatz besteht darin, eine UNION oder Unterabfrage zu verwenden, um mehrere Abfragen zu kombinieren, die jeweils einem der angegebenen Werte entsprechen:
<code class="sql">SELECT * FROM table WHERE id = 1 UNION SELECT * FROM table WHERE id = 3;</code>
Diese Abfrage gibt alle Zeilen zurück, die entweder 1 oder 3 entsprechen, unabhängig vom Vorhandensein anderer Werte.
Das obige ist der detaillierte Inhalt vonWarum fehlen in meiner MySQL-WHERE-IN-Abfrage Zeilen mit mehreren übereinstimmenden Werten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!