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

Mehrere Textwerte in einer Spalte benötigen die Abfrage, um das am besten wiederholbare Wort zu finden

Sie können dies tun, indem Sie sich mit einer hergestellten Zahlenreihe verbinden, die verwendet wird, um das n-te Wort auszuwählen. Leider hat mysql keine eingebaute Methode zum Generieren einer Serie, also ist es ein bisschen hässlich, aber hier ist es:

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

Sehen Sie sich eine Live-Demo auf SQLFiddle an Verwenden Ihrer Daten und Erstellen der erwarteten Ausgabe.

Leider begrenzt die Einschränkung, jeden Wert der Zahlenreihe fest codieren zu müssen, auch die Anzahl der Wörter der Spalte, die verarbeitet werden (in diesem Fall 12). Es spielt keine Rolle, ob die Reihe zu viele Zahlen enthält, und Sie können jederzeit weitere hinzufügen, um einen größeren erwarteten Eingabetext abzudecken.