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

Plusieurs valeurs de texte dans une colonne, besoin de la requête pour trouver le mot le plus répétable

Vous pouvez le faire en vous joignant à une série de numéros manufacturés qui est utilisée pour choisir le nième mot. Malheureusement, mysql n'a pas de méthode intégrée pour générer une série, donc c'est un peu moche, mais la voici :

select
  substring_index(substring_index(title, ' ', num), ' ', -1) word,
  count(*) count
from job j
join (select 1 num union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 10 union select 11 union select 12) n
on length(title) >= length(replace(title, ' ', '')) + num - 1
group by 1
order by 2 desc

Voir une démo en direct sur SQLFiddle en utilisant vos données et en produisant le résultat attendu.

Malheureusement, la limitation d'avoir à coder en dur chaque valeur de la série de nombres limite également le nombre de mots de la colonne qui seront traités (dans ce cas 12). Peu importe s'il y a trop de nombres dans la série, et vous pouvez toujours en ajouter plus pour couvrir un texte d'entrée attendu plus grand.