sql >> Databasteknik >  >> RDS >> Mysql

Flera textvärden i en kolumn, behöver frågan för att hitta det mest repeterbara ordet

Du kan göra det genom att gå med i en tillverkad nummerserie som används för att plocka ut det n:e ordet. Tyvärr har mysql ingen inbyggd metod för att generera en serie, så det är lite fult, men här är 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 använda dina data och producera dina förväntade resultat.

Tyvärr begränsar begränsningen av att behöva hårdkoda varje värde i nummerserien också antalet ord i kolumnen som kommer att behandlas (i detta fall 12). Det spelar ingen roll om det finns för många siffror i serien, och du kan alltid lägga till fler för att täcka en större förväntad inmatningstext.



  1. variabel databasnamn

  2. Är det bra att alltid använda join-klausul i Oracle?

  3. Lösning för:Lagra uppdatering, infoga eller radera uttalande påverkade ett oväntat antal rader (0)

  4. MySQL-datum ändras till gårdagens datum efter JPA-spara