Tenho uma coluna (varchar) que contém palavras separadas por '-'.
Exemplo de tabela:
eu ia | lesma |
---|---|
1 | nome1-nome2-nome3-nome4-nome5 |
2 | nome6-nome2-nome3-nome4-nome7 |
Qual a melhor forma de contar palavras e suas ocorrências?
Resultado esperado:
palavra | contar |
---|---|
nome1 | 1 |
nome2 | 2 |
nome3 | 2 |
nome4 | 2 |
nome5 | 1 |
nome6 | 1 |
nome7 | 1 |
Tentei esta consulta, que funciona rápido em uma tabela com mais de 220 mil registros, mas não tenho certeza se esta é a correta (conta corretamente ou não)
SELECT
SUBSTRING_INDEX(slug,'-',-1) AS word,
count(SUBSTRING_INDEX(slug,'-',-1)) as count
FROM table_name
GROUP BY word
violino
A "melhor" maneira seria normalizar adequadamente seus dados.
Então, seu requisito se torna uma simples consulta "agrupar por":