Maison > base de données > tutoriel mysql > Pourquoi ma requête MySQL WHERE IN () ne renvoie-t-elle pas d'enregistrements avec plusieurs valeurs ?

Pourquoi ma requête MySQL WHERE IN () ne renvoie-t-elle pas d'enregistrements avec plusieurs valeurs ?

Mary-Kate Olsen
Libérer: 2024-11-04 17:54:02
original
433 Les gens l'ont consulté

Why Doesn't My MySQL WHERE IN () Query Return Records with Multiple Values?

La requête MySQL WHERE IN () ne renvoie pas les résultats attendus

Dans MySQL, l'instruction WHERE IN () est couramment utilisée pour récupérer des enregistrements en fonction sur un ensemble de valeurs spécifiées. Cependant, les utilisateurs rencontrent parfois des situations dans lesquelles les lignes attendues ne sont pas renvoyées dans les résultats.

Description du problème :

Un utilisateur a une requête qui sélectionne toutes les lignes de la "table " table où la colonne "id" se trouve dans une liste spécifiée :

<code class="sql">SELECT * FROM table WHERE id IN (1,2,3,4);</code>
Copier après la connexion

L'utilisateur a noté que lorsqu'un enregistrement a plusieurs valeurs "id" (par exemple, 1 et 3), il n'est pas renvoyé dans les résultats.

Comprendre le problème :

L'instruction WHERE IN () traduit la liste de valeurs fournie en une série d'opérateurs OR :

<code class="sql">SELECT * FROM table WHERE id='1' or id='2' or id='3' or id='4';</code>
Copier après la connexion

Cela signifie que seules les lignes dont la colonne « id » correspond exactement à l'une des valeurs spécifiées seront renvoyées.

Solution 1 : Utiliser FIND_IN_SET

One L'approche pour surmonter cette limitation consiste à modifier la structure des données en changeant le type de données de la colonne "id" en SET. Cela permet à la colonne de stocker plusieurs valeurs.

À l'aide de la fonction FIND_IN_SET, vous pouvez ensuite rechercher des enregistrements où une valeur spécifique est présente dans le SET :

<code class="sql">SELECT * FROM table WHERE FIND_IN_SET('1', id);</code>
Copier après la connexion

Cependant, il est important de notez que cette solution entraîne une complexité supplémentaire et peut ne pas convenir à tous les scénarios.

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