Maison >développement back-end >tutoriel php >Comment puis-je rechercher efficacement des enregistrements comportant plusieurs valeurs dans une seule colonne de base de données ?

Comment puis-je rechercher efficacement des enregistrements comportant plusieurs valeurs dans une seule colonne de base de données ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-28 02:51:10551parcourir

How Can I Efficiently Find Records with Multiple Values in a Single Database Column?

Recherche d'enregistrements avec plusieurs valeurs dans une colonne

Dans une base de données relationnelle, il est courant de stocker plusieurs valeurs dans une seule colonne. Cependant, lors de l’interrogation de données avec de telles colonnes, il peut s’avérer difficile d’isoler des valeurs spécifiques. Explorons un scénario dans lequel nous avons un tableau avec une colonne « enfants » contenant plusieurs noms séparés par des virgules.

Problème :

Considérez le tableau suivant :

id name children
1 Roberto Michael,Dia
2 Maria John,Alex
3 Mary Alexandre,Diana

L'objectif est de retrouver le parent qui a un enfant prénommé Alex. Bien que l'utilisation de "WHERE children = 'Alex'" soit idéale, elle échoue en raison des multiples noms dans chaque cellule. L'utilisation de "WHERE children LIKE '%Alex%'" renvoie des correspondances supplémentaires sans rapport.

Schéma normalisé :

Pour résoudre ce problème, le schéma de la table peut être normalisé en créant un tableau séparé pour les enfants avec une rangée pour chaque enfant. La table d'origine peut ensuite être jointe à la table enfant pour localiser le parent avec un enfant spécifique. Cependant, si cette solution n'est pas réalisable, il existe une alternative :

Fonction FIND_IN_SET :

La fonction MySQL FIND_IN_SET() peut être utilisée pour vérifier si une valeur spécifique est présent dans une liste délimitée par des virgules. Pour ce scénario, la requête serait :

WHERE FIND_IN_SET('Alex', children)

Cette requête renverra les lignes où « Alex » se trouve dans la colonne « enfants ».

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