Ma table ressemble à ceci p>
MY_TABLE P>
J'ai besoin du résultat pour être comme p>
Notant que parfois, j'ai dans ma valeur de table, alors "," alors une autre valeur, et parfois de la valeur "," puis de l'espace, puis de la valeur vide p>
3 Réponses :
Cela impliquera une séquence d'étapes.
En supposant que vos enregistrements soient comme dans le tableau1 - P>
Étape 1: Créer une table temporaire -
Étape 2: Créer une instruction SQL de manière dynamique
Étape 3: Préparez la déclaration SQL
Étape 4: Exécutez l'instruction SQL créée ci-dessus
Étape 5: Exécutez ci-dessous SQL pour avoir requis de sortie -
sortie - + ------------------------------- +
| Titre |
+ ---------------------------------- +
| Ventes, marketing, opérations |
| Ventes |
| Opérations, gestion de projet |
| Ventes, opérations |
| |
| , |
+ -------------------------------- + code> p>
Créer une table temporaire TEMP (VAL CHAR (255)); CODE> P>
SET @ SQL = Concat ("Insert dans les valeurs TEMP (VAL) ('", Remplacer ((Sélectionnez group_concat (titre) comme T de TABLE1), "", ""), "" ); "); code> p>
Préparez STMT1 de @sql; code> p>
exécuter stmt1; code> p>
Sélectionnez VAL, COUNT (VAL) du groupe TEMP par VAL AVEC VAL! = "" CODE> P>
+ -------------------- + ------------- +
| val | Compte (val) |
+ --------------------- + ------------- +
| Marketing | 1 |
| Opérations | 3 |
| Gestion de projet | 1 |
| Ventes | 3 |
+ --------------------- + ------------ + code> p>
Merci beaucoup pour la réponse, j'ai essayé cela mais j'ai eu une erreur d'accès, je suppose que je n'ai pas de créer des tables d'accès. J'essayais de le faire à travers une "table aplatir" mais n'aurez pas assez d'expérience de le faire
Quelle est la taille de vos données de table? (nombre d'enregistrements)
Ma table est 14 colonnes et 1,5 million de lignes
Une autre réponse - p>
Si vous avez des valeurs limitées pour essayer d'utiliser ci-dessous SQL pour chaque titre. P>
sortie -
Évidemment, cela frappera la performance mais enregistre des privilèges de création de table. P> Sélectionnez "Ventes", somme (ronde ((Longueur (Titre) - Longueur (Remplacer (Titre, "Ventes", ""))) / Longueur ("Ventes"))) Comptez de table1; code> p>
+ ------- + ------- +
| Ventes | Compte |
+ ------- + ------- +
| Ventes | 3 |
+ ------- + ------- + code> p>
Avec la sélection suivante, vous obtenez toutes les valeurs de la colonne Coma séparée de leurs propres lignes et vous pouvez utiliser OT pour faire tout ce que vous voulez. Ceci fonctionne également sur les versions MySQL 5.x.
Si vous avez plus de 6 mots dans votre colonne, vous devez développer la vue de RIFGT si la jointure interne p> donne vous p> et avec p> vous obtenez p> exemple dbfiddle https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=a3f5dc5f7b31f0270d595d2635a99a08 p> p>
Votre table ne ressemble pas à une image, et si votre résultat devrait ressembler à une image, la balise est fausse, elle ne doit pas être
mysql code>, mais quelque chose commeimageProcessing code> ( Si cette balise existe) ...Vous devriez probablement vérifier la conception de votre table. Je vous conseille de sauvegarder l'enregistrement multi-valeurs en plusieurs enregistrements.