Maison > base de données > tutoriel mysql > Comment puis-je utiliser une variable MySQL avec une liste séparée par des virgules dans une clause « NOT IN » ?

Comment puis-je utiliser une variable MySQL avec une liste séparée par des virgules dans une clause « NOT IN » ?

DDD
Libérer: 2025-01-04 06:11:43
original
668 Les gens l'ont consulté

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

Établissement d'une variable MySQL pour une liste de valeurs exclues dans une requête "NOT IN"

Dans MySQL, la construction d'une requête qui exclut des valeurs spécifiques basées sur une liste prédéfinie peut être délicat. Cette question aborde le problème de l'attribution d'une variable pour contenir une liste de valeurs exclues séparées par des virgules et de son utilisation dans la clause "NOT IN".

Formats de variables incorrects

Comme mentionné dans la question, l'attribution de la variable dans différents formats a échoué, entraînant soit des erreurs, soit des valeurs ignorées. Voici les formats tentés :

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

Le Problème

Le défi réside dans la manière dont la clause "IN" est compilée dans la requête. Lors de l'utilisation de la variable, elle se compile en une seule chaîne : WHERE id_campo not in ("817 803 495"). Cependant, le format correct pour une clause "NOT IN" nécessite des valeurs distinctes : WHERE id_campo not in ('817','803','495').

Solution : Utilisation de FIND_IN_SET()

Pour pallier ce problème, MySQL propose la fonction FIND_IN_SET(), qui permet une exclusion basée sur une liste définie dans un variable. La requête modifiée ressemblerait à ceci :

SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
Copier après la connexion

Cette solution exclut avec succès les lignes où les valeurs id_campo correspondent à n'importe quelle valeur de la variable @idcamposexcluidos.

Remarque : While FIND_IN_SET() résout le problème, il empêche l'utilisation d'index sur la colonne id_campo.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal