Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Gruppierung mit einem kommagetrennten Feld

Sie benötigen ein Rowset, das alle möglichen Werte Ihrer Fähigkeiten enthält.

MySQL keine Möglichkeit, dies zu tun, also müssen Sie es irgendwie generieren.

Wenn Sie eine solche Ergebnismenge haben, geben Sie einfach Folgendes aus:

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

Da Sie erwähnt haben, dass Sie Ihre Fähigkeiten in einer separaten Tabelle haben, verwenden Sie diese Tabelle:

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

Dies wird jedoch niemals mit den Tippfehlern übereinstimmen, sie werden einfach übersprungen.