Mysql
 sql >> Database >  >> RDS >> Mysql

Raggruppamento MySQL con un campo separato da virgole

Devi avere un set di righe contenente tutti i possibili valori delle tue abilità.

MySQL manca un modo per farlo, quindi dovrai generarlo in qualche modo.

Se hai un tale set di risultati, emetti semplicemente:

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

Dato che hai detto che hai le tue abilità in una tabella separata, usa quella tabella:

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

Questo, tuttavia, non corrisponderà mai agli errori di battitura, verranno semplicemente saltati.