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
Libérer: 2024-12-28 02:51:10
original
564 Les gens l'ont consulté

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)
Copier après la connexion

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!

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