Heim >Datenbank >MySQL-Tutorial >Warum gibt die MySQL IN()-Abfrage keine Zeilen mit mehreren übereinstimmenden IDs zurück?

Warum gibt die MySQL IN()-Abfrage keine Zeilen mit mehreren übereinstimmenden IDs zurück?

Susan Sarandon
Susan SarandonOriginal
2024-11-04 16:38:02911Durchsuche

Why Doesn't MySQL IN() Query Return Rows with Multiple Matching IDs?

MySQL IN ()-Abfrageproblem für Multi-ID-Datensätze

Beim Ausführen der Abfrage:

SELECT * FROM table WHERE id IN (1,2,3,4);

zu Beim Abrufen von Daten basierend auf mehreren IDs kann es zu einem Problem kommen, bei dem Zeilen mit mehreren übereinstimmenden IDs nicht zurückgegeben werden. Diese Abfrage bedeutet:

SELECT * FROM table WHERE id='1' or id='2' or id='3' or id='4';

wobei nur Zeilen abgerufen werden, die mit einer einzelnen ID im Satz übereinstimmen.

Lösung: Verwendung des SET-Datentyps

Um diese Einschränkung zu beheben, können Sie erwägen, den Datentyp der ID-Spalte in SET zu ändern. Dadurch können Sie mehrere Werte in einer einzigen Spalte speichern. Nachdem Sie diese Änderung vorgenommen haben, können Sie die Funktion FIND_IN_SET in Ihrer Abfrage verwenden:

SELECT * FROM table WHERE FIND_IN_SET('1', id);

Diese Abfrage gibt alle Zeilen zurück, die „1“ als einen der Werte in der ID-Spalte enthalten, unabhängig von anderen Werten gegenwärtig. Dies bietet eine flexiblere Möglichkeit, Datensätze mit mehreren IDs abzugleichen.

Das obige ist der detaillierte Inhalt vonWarum gibt die MySQL IN()-Abfrage keine Zeilen mit mehreren übereinstimmenden IDs 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