Maison  >  Article  >  base de données  >  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
Barbara Streisandoriginal
2024-11-01 10:27:02825parcourir

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>

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