-2
votes

Les valeurs de table de comptage MySQL de la virgule séparée

Ma table ressemble à ceci

MY_TABLE

J'ai besoin du résultat pour être comme

attendu_result

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


2 commentaires

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 , mais quelque chose comme imageProcessing ( 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.


3 Réponses :


0
votes

Cela impliquera une séquence d'étapes.
En supposant que vos enregistrements soient comme dans le tableau1 -

+ ------------------------------- + | Titre | + ---------------------------------- + | Ventes, marketing, opérations | | Ventes | | Opérations, gestion de projet | | Ventes, opérations | | | | , | + -------------------------------- +

Étape 1: Créer une table temporaire -
Créer une table temporaire TEMP (VAL CHAR (255));

Étape 2: Créer une instruction SQL de manière dynamique SET @ SQL = Concat ("Insert dans les valeurs TEMP (VAL) ('", Remplacer ((Sélectionnez group_concat (titre) comme T de TABLE1), "", ""), "" ); ");

Étape 3: Préparez la déclaration SQL Préparez STMT1 de @sql;

Étape 4: Exécutez l'instruction SQL créée ci-dessus exécuter stmt1;

Étape 5: Exécutez ci-dessous SQL pour avoir requis de sortie - Sélectionnez VAL, COUNT (VAL) du groupe TEMP par VAL AVEC VAL! = ""

sortie -
+ -------------------- + ------------- + | val | Compte (val) | + --------------------- + ------------- + | Marketing | 1 | | Opérations | 3 | | Gestion de projet | 1 | | Ventes | 3 | + --------------------- + ------------ +


3 commentaires

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



0
votes

Une autre réponse -

Si vous avez des valeurs limitées pour essayer d'utiliser ci-dessous SQL pour chaque titre.

Sélectionnez "Ventes", somme (ronde ((Longueur (Titre) - Longueur (Remplacer (Titre, "Ventes", ""))) / Longueur ("Ventes"))) Comptez de table1;

sortie -
+ ------- + ------- + | Ventes | Compte | + ------- + ------- + | Ventes | 3 | + ------- + ------- +

Évidemment, cela frappera la performance mais enregistre des privilèges de création de table.


0 commentaires

0
votes

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 xxx

donne vous xxx

et avec xxx

vous obtenez xxx

exemple dbfiddle https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=a3f5dc5f7b31f0270d595d2635a99a08


0 commentaires