


Puis-je joindre des tables dans MySQL en fonction de valeurs séparées par des points-virgules ?
Puis-je résoudre ce problème avec Pure MySQL ? (Joindre sur ';' Valeurs séparées dans une colonne)
Question :
J'ai des données dans plusieurs tables que je dois rejoindre en fonction de ';' (point-virgule) sépare les valeurs dans une colonne. Je ne peux pas utiliser PHP ou tout autre langage pour manipuler les résultats. Existe-t-il un moyen d'y parvenir en utilisant uniquement MySQL ?
Réponse :
Oui, il est possible de rejoindre sur ';' valeurs séparées dans une colonne en utilisant MySQL pur. Vous trouverez ci-dessous une explication détaillée de la solution :
Conversion de la chaîne délimitée en lignes
La clé est de convertir le ';' chaîne délimitée en une série de lignes. Ceci peut être réalisé en suivant les étapes suivantes :
- Créez un tableau nommé série entière contenant les nombres de 1 au nombre maximum d'éléments dans la chaîne délimitée.
- Utilisez COUNT_IN_SET et VALUE_IN_SET fonctions pour compter le nombre d'éléments dans la chaîne délimitée et extraire chaque élément en fonction de sa position.
- Rejoignez la table user_resource avec la table integerseries à l'aide d'une jointure croisée. Cela générera des lignes pour chaque élément de la chaîne délimitée.
Requête pour normaliser la table User_resource
<code class="sql">SELECT user_resource.user, user_resource.resources, COUNT_IN_SET(user_resource.resources, ';') AS resources_count, isequence.id AS resources_index, VALUE_IN_SET(user_resource.resources, ';', isequence.id) AS resources_value FROM user_resource JOIN integerseries AS isequence ON isequence.id <= COUNT_IN_SET(user_resource.resources, ';') ORDER BY user_resource.user, isequence.id</code>
Rejoindre la table normalisée avec la table des ressources
Une fois la table user_resource normalisée, elle peut être jointe à la table des ressources pour obtenir le résultat souhaité.
<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>
Exemples d'entrée et de sortie
Tableau des ressources utilisateur :
user | resources |
---|---|
user1 | 1;2;4 |
user2 | 2 |
user3 | 3;4 |
Tableau des ressources :
id | data |
---|---|
1 | data1 |
2 | data2 |
3 | data3 |
4 | data4 |
5 | data5 |
Tableau des ressources_utilisateur normalisé :
user | resources | resources_count | resources_index | resources_value |
---|---|---|---|---|
user1 | 1;2;4 | 3 | 1 | 1 |
user1 | 1;2;4 | 3 | 2 | 2 |
user1 | 1;2;4 | 3 | 3 | 4 |
user2 | 2 | 1 | 1 | 2 |
user3 | 3;4 | 2 | 1 | 3 |
user3 | 3;4 | 2 | 2 | 4 |
Sortie (résultat joint) :
user | data |
---|---|
user1 | data1 |
user1 | data2 |
user1 | data4 |
user2 | data2 |
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?

Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)?
