„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie gehe ich mit Datensätzen mit mehreren Werten in einer MySQL-WHERE-IN()-Klausel um?

Wie gehe ich mit Datensätzen mit mehreren Werten in einer MySQL-WHERE-IN()-Klausel um?

Veröffentlicht am 23.12.2024
Durchsuche:754

How to Handle Records with Multiple Values in a MySQL WHERE IN() Clause?

MySQL IN ()-Operator

Bei der Abfrage einer MySQL-Datenbank wird der WHERE IN ()-Operator häufig verwendet, um Zeilen basierend auf bestimmten Daten abzurufen Werte in einer Spalte. Die folgende Abfrage ruft beispielsweise alle Zeilen aus der Tabelle „table“ ab, in denen die Spalte „id“ mit einem der Werte (1, 2, 3, 4) übereinstimmt:

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

Es tritt jedoch ein Problem auf, wenn ein Datensatz mehrere „id“-Werte wie 1 und 3 hat. In solchen Fällen kann die Abfrage Diese Zeile wird nicht zurückgegeben.

Lösung

Die Abfrage wird in die folgenden ODER-Bedingungen übersetzt:

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

Daher werden nur Zeilen zurückgegeben die einer dieser Bedingungen entsprechen.

Um dieses Problem zu beheben, besteht eine Möglichkeit darin, den SET-Datentyp für die Spalte „id“ zu verwenden. Dadurch können Sie mehrere Werte mithilfe von durch Kommas getrennten Zeichenfolgen speichern. Sie können dann die Funktion FIND_IN_SET() verwenden, um nach bestimmten Werten zu suchen:

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

Diese Abfrage gibt alle Zeilen zurück die „1“ als einen der Werte in der Spalte „id“ haben, unabhängig von anderen eventuell vorhandenen Werten.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3