Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi MySQL WHERE IN () ne renvoie-t-il pas plusieurs correspondances d'ID lors de l'utilisation du type de données SET ?

Mary-Kate Olsen
Libérer: 2024-11-04 17:52:01
original
360 Les gens l'ont consulté

Why Doesn't MySQL WHERE IN () Return Multiple ID Matches When Using SET Data Type?

MySQL WHERE IN () ne renvoie pas plusieurs correspondances d'ID

Dans MySQL, la clause WHERE IN () est utilisée pour filtrer les résultats en fonction de une liste spécifiée de valeurs. Cependant, lorsqu'une colonne de table contient plusieurs valeurs, elle peut ne pas renvoyer de lignes correspondant à toutes les valeurs spécifiées.

Considérez la requête suivante :

SELECT * FROM table WHERE id IN (1, 2, 3, 4);
Copier après la connexion

Cette requête récupère toutes les lignes où le La colonne id est égale à 1, 2, 3 ou 4. Cependant, si une ligne contient plusieurs de ces valeurs, elle risque de ne pas être renvoyée.

Pour comprendre pourquoi, il est important de noter que la colonne IN La clause se traduit par une condition OU logique :

SELECT * FROM table WHERE id='1' OR id='2' OR id='3' OR id='4';
Copier après la connexion

Cela signifie que seules les lignes qui correspondent exactement à l'une des valeurs spécifiées seront renvoyées.

Solution utilisant le type de données SET et FIND_IN_SET

Une façon de résoudre ce problème consiste à modifier le type de données de la colonne id en un type de données SET. Dans une colonne SET, plusieurs valeurs peuvent être stockées sous forme de liste séparée par des virgules.

Une fois le type de données modifié en SET, vous pouvez utiliser la fonction FIND_IN_SET pour récupérer des lignes en fonction d'une valeur spécifique :

SELECT * FROM table WHERE FIND_IN_SET('1', id);
Copier après la connexion

Cette requête renverra toutes les lignes où la colonne id contient la valeur 1, qu'elle contienne également d'autres valeurs.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal