Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine MySQL-Variable mit einer durch Kommas getrennten Liste in einer „NOT IN'-Klausel verwenden?

Wie kann ich eine MySQL-Variable mit einer durch Kommas getrennten Liste in einer „NOT IN'-Klausel verwenden?

DDD
Freigeben: 2025-01-04 06:11:43
Original
667 Leute haben es durchsucht

How Can I Use a MySQL Variable with a Comma-Separated List in a

Einrichten einer MySQL-Variablen für eine Liste ausgeschlossener Werte in einer „NOT IN“-Abfrage

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:

  • SET @idcamposexcluidos='(817,803,495)';
  • SET @idcamposexcluidos=817,803,495;

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage