Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wiele wartości tekstowych w jednej kolumnie, potrzebujesz zapytania, aby znaleźć najbardziej powtarzalne słowo

Możesz to zrobić, łącząc z wyprodukowaną serią numerów, która służy do wybrania n-tego słowa. Niestety mysql nie ma wbudowanej metody generowania serii, więc jest trochę brzydkie, ale oto jest:

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

Zobacz demonstrację na żywo w SQLFiddle wykorzystując Twoje dane i wytwarzając oczekiwany wynik.

Niestety ograniczenie konieczności zakodowania na stałe każdej wartości serii liczb ogranicza również liczbę słów kolumny, która będzie przetwarzana (w tym przypadku 12). Nie ma znaczenia, czy w serii jest zbyt wiele liczb i zawsze możesz dodać więcej, aby pokryć większy oczekiwany tekst wejściowy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. O Neo4j

  2. Uruchamianie skryptu .sql przy użyciu MySQL z JDBC

  3. wstaw wybrane dane jako klucz obcy i SQLSTATE[23000]:Naruszenie ograniczenia integralności:1048

  4. Dlaczego easy_install nie może znaleźć MySQLdb?

  5. Jak sprawdzić, czy wartość istnieje w bazie danych MySQL