sql >> Databasteknik >  >> RDS >> Mysql

MySQL-gruppering med ett kommaseparerat fält

Du måste ha en raduppsättning som innehåller alla möjliga värden för dina färdigheter.

MySQL saknar ett sätt att göra det, så du måste generera det på något sätt.

Om du har en sådan resultatuppsättning, fråga bara:

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

Eftersom du nämnde att du har dina kunskaper i en separat tabell, använd den tabellen:

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

Detta kommer dock aldrig att matcha stavfelen, de kommer bara att hoppas över.




  1. Mycket enkel AVG() aggregeringsfråga på MySQL-servern tar löjligt lång tid

  2. Förbättring av Top / Top Descending Median Solution

  3. Välj distinkta värden baserat på en kolumn med maximalt datumvärde från den andra kolumnen

  4. Jag vill kontrollera om posten finns och om den inte existerar så vill jag infoga den posten i databasen med golang