Maison > base de données > tutoriel mysql > Puis-je joindre des tables avec des valeurs séparées par des points-virgules dans une colonne en utilisant Pure MySQL ?

Puis-je joindre des tables avec des valeurs séparées par des points-virgules dans une colonne en utilisant Pure MySQL ?

Barbara Streisand
Libérer: 2024-11-01 10:27:02
original
916 Les gens l'ont consulté

Can I Join Tables with Semi-colon Separated Values in a Column Using Pure MySQL?

Puis-je résoudre ce problème avec du MySQL pur ? (rejoindre des valeurs séparées par ';' dans une colonne)

Question :

Étant donné deux tables, une table utilisateur t1 avec une colonne de ressources contenant '; ' des ID de ressources séparés et une table de ressources t2 avec un ID et des données, vous souhaitez joindre t1 et t2 pour obtenir une table avec des données d'utilisateur et de ressources.

Problème :

Vous ne pouvez pas utiliser de langages externes pour manipuler les résultats et la table user_resources est dénormalisée.

Solution :

Créez une table appelée série entière avec des nombres de 1 à une certaine limite. Utilisez les fonctions COUNT_IN_SET et VALUE_IN_SET, qui traitent la colonne de ressources comme un tableau, pour normaliser la table. Rejoignez ensuite des séries entières pour extraire les identifiants de ressources individuels.

<code class="sql">SELECT user_resource.user, 
       resource.data

FROM user_resource 
     JOIN integerseries AS isequence 
       ON isequence.id <= COUNT_IN_SET(user_resource.resources, ';') 

     JOIN resource 
       ON resource.id = VALUE_IN_SET(user_resource.resources, ';', isequence.id)      
ORDER BY
       user_resource.user,  resource.data</code>
Copier après la connexion

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