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

Flere tekstværdier i én kolonne, kræver forespørgslen for at finde det mest gentagelige ord

Du kan gøre det ved at slutte dig til en fremstillet nummerserie, der bruges til at udvælge det n'te ord. Mysql har desværre ingen indbygget metode til at generere en serie, så det er lidt grimt, men her er det:

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

Se en live demo på SQLFiddle bruge dine data og producere dit forventede output.

Desværre begrænser begrænsningen ved at skulle hårdkode hver værdi i nummerserien også antallet af ord i kolonnen, der vil blive behandlet (i dette tilfælde 12). Det er lige meget, om der er for mange tal i serien, og du kan altid tilføje flere for at dække en større forventet inputtekst.



  1. Hvordan kan jeg indstille en tabelbegrænsning, der kan udskydes oprindeligt i django-modellen?

  2. Hvis du vælger Distinkt felt og rækkenummer bare for at vise et id-nummer, får du duplikerede data

  3. MySQL:Vælg forrige måned og måned før

  4. hvordan bruger jeg en variabel i oprette database-sætning