Maison >base de données >tutoriel mysql >Comment formater correctement les variables MySQL à utiliser dans une clause « NOT IN » ?

Comment formater correctement les variables MySQL à utiliser dans une clause « NOT IN » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-31 20:32:10920parcourir

How to Correctly Format MySQL Variables for Use in a

Format de variable MySQL pour une liste de valeurs « NOT IN »

Lors de la tentative d'exclusion de certaines valeurs dans une requête MySQL à l'aide d'une liste « NOT IN », l'attribution d'un variable aux valeurs exclues peut être une solution pratique. Cependant, il est crucial de garantir le bon format de variable.

Comme décrit dans votre requête, vous avez essayé d'attribuer la variable '@idcamposexcluidos' avec différents formats :

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

Cependant, aucun de ces formats ne fonctionne comme prévu. La raison en est que la clause « IN » nécessite des valeurs distinctes, et non une seule chaîne. Par conséquent, la requête :

WHERE id_campo not in (@idcamposexcluidos)

devient effectivement :

WHERE id_campo not in ('817,803,495')

ce qui est incorrect. Les valeurs doivent être fournies sous forme de chaînes littérales distinctes :

WHERE id_campo not in ('817','803','495')

Pour résoudre ce problème, il existe deux options :

  1. SQL dynamique : Créer la requête dynamiquement en utilisant une concaténation des valeurs exclues.
  2. MySQL FIND_IN_SET() Fonction : Utilisez la fonction FIND_IN_SET() pour vérifier si la valeur existe dans la liste des valeurs exclues séparées par des virgules, comme indiqué ci-dessous :
SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0

Notez que l'utilisation de FIND_IN_SET() la fonction peut nuire à l’utilisation de l’index.

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!

Déclaration:
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