In MySQL kann das Erstellen einer Abfrage erfolgen, die bestimmte Werte basierend auf einer vordefinierten Liste ausschließt knifflig sein. Diese Frage befasst sich mit dem Problem, einer Variablen eine durch Kommas getrennte Liste ausgeschlossener Werte zuzuweisen und sie in der „NOT IN“-Klausel zu verwenden.
Falsche Variablenformate
Wie in der Frage erwähnt, war die Zuweisung der Variablen in verschiedenen Formaten nicht erfolgreich, was entweder zu Fehlern oder ignorierten Werten führte. Hier sind die versuchten Formate:
Die Problem
Die Herausforderung liegt darin, wie die „IN“-Klausel in der Abfrage kompiliert wird. Wenn die Variable verwendet wird, wird sie in eine einzelne Zeichenfolge kompiliert: WHERE id_campo not in ('817,803,495'). Das korrekte Format für eine „NOT IN“-Klausel erfordert jedoch separate Werte: WHERE id_campo not in ('817','803','495').
Lösung: Verwendung von FIND_IN_SET()
Um dieses Problem zu lösen, bietet MySQL die Funktion FIND_IN_SET() an, die einen Ausschluss basierend auf einer in a definierten Liste ermöglicht variabel. Die geänderte Abfrage würde so aussehen:
SET @idcamposexcluidos='817,803,495'; ... WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
Diese Lösung schließt erfolgreich Zeilen aus, in denen die id_campo-Werte mit einem beliebigen Wert in der @idcamposexcluidos-Variablen übereinstimmen.
Hinweis: While FIND_IN_SET() behebt das Problem und verhindert die Verwendung von Indizes für die Spalte id_campo.
Das obige ist der detaillierte Inhalt vonWie kann ich eine MySQL-Variable mit einer durch Kommas getrennten Liste in einer „NOT IN'-Klausel verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!