Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL WHERE IN () bei Verwendung des SET-Datentyps nicht mehrere ID-Übereinstimmungen zurück?

Warum gibt MySQL WHERE IN () bei Verwendung des SET-Datentyps nicht mehrere ID-Übereinstimmungen zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 17:52:01396Durchsuche

Why Doesn't MySQL WHERE IN () Return Multiple ID Matches When Using SET Data Type?

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!

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