Heim > Datenbank > MySQL-Tutorial > Wie verwende ich „NOT IN' korrekt mit einer Werteliste in MySQL?

Wie verwende ich „NOT IN' korrekt mit einer Werteliste in MySQL?

Barbara Streisand
Freigeben: 2025-01-03 12:23:39
Original
791 Leute haben es durchsucht

How to Correctly Use

Richtiges Format für „NOT IN“-Werteliste in MySQL

Beim Versuch, eine Tabellenvariable mit einer durch Kommas getrennten Werteliste zu füllen und sie als zu verwenden Wenn Sie den Filter „NICHT IN“ verwenden, treten häufige Hindernisse auf. Es ist von entscheidender Bedeutung, die korrekte Syntax und die Einschränkungen dieses Vorgangs zu verstehen.

Das Problem

Wie die ursprüngliche Abfrage zeigt, wird eine Variable auf eine durch Kommas getrennte Werteliste gesetzt:

SET @idcamposexcluidos='817,803,495';
Nach dem Login kopieren

und der anschließende Versuch, es in einem „WHERE NOT IN“-Zustand zu verwenden:

WHERE id_campo not in (@idcamposexcluidos)
Nach dem Login kopieren

führt oft zu Fehlern oder unbeabsichtigte Ergebnisse.

Die Lösung

Der Kern des Problems liegt in der Erwartung der IN-Klausel an eindeutige Werte. Die Verwendung einer durch Kommas getrennten Zeichenfolge als Parameter wird jedoch effektiv zu einer einzelnen Zeichenfolge in der IN-Klausel kompiliert, was zu falschen Vergleichen führt.

Um dies zu beheben, muss man entweder dynamisches SQL verwenden oder die FIND_IN_SET()-Funktion von MySQL verwenden :

SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
Nach dem Login kopieren

Obwohl FIND_IN_SET() eine Problemumgehung bietet, bringt sie ihre Einschränkungen mit sich. Im Gegensatz zur Verwendung von Indizes führt dies zu Leistungseinbußen, da eine lineare Suche durch die Werteliste erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie verwende ich „NOT IN' korrekt mit einer Werteliste in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage