sql >> Databáze >  >> RDS >> Mysql

Více textových hodnot v jednom sloupci, vyžaduje dotaz k nalezení nejvíce opakovatelného slova

Můžete to udělat spojením s vyrobenou číselnou řadou, která se používá k výběru n-tého slova. Bohužel mysql nemá žádnou vestavěnou metodu pro generování série, takže je to trochu ošklivé, ale tady to je:

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

Podívejte se na živou ukázku na SQLFiddle pomocí vašich dat a vytváření očekávaného výstupu.

Bohužel omezení nutnosti pevně zakódovat každou hodnotu číselné řady také omezuje počet slov ve sloupci, která budou zpracována (v tomto případě 12). Nezáleží na tom, zda je v řadě příliš mnoho čísel, a vždy můžete přidat další, abyste pokryli větší očekávaný vstupní text.



  1. Smazat – nemohu určit cílovou tabulku?

  2. Je lepší použít prázdnou hodnotu jako '' nebo jako NULL?

  3. Poslední aktivity uživatele - PHP MySQL

  4. Dotaz nevrací výsledky podle očekávání