MySQL WHERE IN () gibt nicht mehrere ID-Übereinstimmungen zurück
In MySQL wird die WHERE IN()-Klausel verwendet, um Ergebnisse basierend auf zu filtern eine spezifizierte Liste von Werten. Wenn eine Tabellenspalte jedoch mehrere Werte enthält, werden möglicherweise keine Zeilen zurückgegeben, die mit allen angegebenen Werten übereinstimmen.
Betrachten Sie die folgende Abfrage:
SELECT * FROM table WHERE id IN (1, 2, 3, 4);
Diese Abfrage ruft alle Zeilen ab, in denen die Die ID-Spalte ist gleich 1, 2, 3 oder 4. Wenn eine Zeile jedoch mehr als einen dieser Werte enthält, wird sie möglicherweise nicht zurückgegeben.
Um zu verstehen, warum, ist es wichtig zu beachten, dass die IN Die Klausel wird in eine logische ODER-Bedingung übersetzt:
SELECT * FROM table WHERE id='1' OR id='2' OR id='3' OR id='4';
Dies bedeutet, dass nur Zeilen zurückgegeben werden, die genau einem der angegebenen Werte entsprechen.
Lösung mit SET-Datentyp und FIND_IN_SET
Eine Möglichkeit, dieses Problem zu beheben, besteht darin, den Datentyp der ID-Spalte in einen SET-Datentyp zu ändern. In einer SET-Spalte können mehrere Werte als durch Kommas getrennte Liste gespeichert werden.
Sobald der Datentyp in SET geändert wurde, können Sie die Funktion FIND_IN_SET verwenden, um Zeilen basierend auf einem bestimmten Wert abzurufen:
SELECT * FROM table WHERE FIND_IN_SET('1', id);
Diese Abfrage gibt alle Zeilen zurück, in denen die ID-Spalte den Wert 1 enthält, unabhängig davon, ob sie auch andere Werte enthält.
Das obige ist der detaillierte Inhalt vonWarum gibt MySQL WHERE IN () bei Verwendung des SET-Datentyps nicht mehrere ID-Übereinstimmungen zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!