Mysql
 sql >> Base de données >  >> RDS >> Mysql

Regroupement MySQL avec un champ séparé par des virgules

Vous devez avoir un ensemble de lignes contenant toutes les valeurs possibles de vos compétences.

MySQL manque un moyen de le faire, vous devrez donc le générer d'une manière ou d'une autre.

Si vous avez un tel jeu de résultats, lancez simplement :

SELECT  skill, COUNT(*)
FROM    (
        SELECT 'Install' AS skill
        UNION ALL
        SELECT 'Configure' AS skill
        UNION ALL
        SELECT 'Setup' AS skill
        UNION ALL
        SELECT 'Blah' AS skill
        ) s
JOIN    users u
ON      find_in_set(s.skill, u.sets)
GROUP BY
        s.skill

Puisque vous avez mentionné que vous avez vos compétences dans un tableau séparé, utilisez ce tableau :

SELECT  skill, COUNT(*)
FROM    skills s
JOIN    users u
ON      find_in_set(s.skill, u.sets)
GROUP BY
        s.skill

Ceci, cependant, ne correspondra jamais aux fautes de frappe, elles seront simplement ignorées.