Maison >développement back-end >tutoriel php >Comment rechercher efficacement des tables MySQL avec des valeurs séparées par des virgules à l'aide de FIND_IN_SET ?
Recherche dans une table MySQL avec des valeurs séparées par des virgules à l'aide de FIND_IN_SET
Dans les bases de données relationnelles comme MySQL, la gestion des valeurs séparées par des virgules peut poser des problèmes lors de la recherche pour des enregistrements spécifiques. Supposons que nous ayons deux tables : clients et imap_emails, où la table clients contient les e-mails des clients et la table imap_emails stocke les e-mails avec des champs "à" et "de" séparés par des virgules.
Pour récupérer les e-mails de la table imap_emails en fonction des adresses e-mail des clients, nous pouvons exploiter la fonction FIND_IN_SET. Cette fonction détermine si une valeur spécifique existe dans une liste séparée par des virgules.
Un exemple de requête utilisant FIND_IN_SET serait :
SELECT * FROM imap_emails INNER JOIN customers ON FIND_IN_SET(customers.email, imap_emails.to) > 0;
Cette requête rejoint les tables imap_emails et clients en fonction de la condition. que l'e-mail d'un client est inclus dans le champ "à" d'un e-mail dans la table imap_emails. Le résultat inclura tous les e-mails pour lesquels cette condition est remplie.
Cependant, si un e-mail contient deux adresses e-mail ou plus, la requête peut renvoyer plusieurs lignes pour un seul e-mail. Pour affiner la recherche, vous pouvez utiliser des conditions supplémentaires dans la clause WHERE, comme vérifier des adresses e-mail spécifiques ou limiter le nombre de résultats par client.
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!