Eu tenho a seguinte estrutura de tabela
+ id + word +
+------+--------+
A tabela é preenchida com as palavras em caixa baixa de um determinado texto, então o texto
Ola tchau ola
resultaria em
+ id + word +
+------+--------+
+ 1 + hello +
+------+--------+
+ 2 + bye +
+------+--------+
+ 3 + hello +
+------+--------+
Quero fazer uma consulta SELECT que retornará o número de palavras que são repetidas pelo menos duas vezes na tabela (como olá)
SELECT COUNT(id) FROM words WHERE (SELECT COUNT(words.word))>1
o que é muito errado e sobrecarregado quando a mesa é grande. Alguma ideia de como atingir esse objetivo? No exemplo fornecido acima, eu esperaria 1
Respostas:
Para obter uma lista das palavras que aparecem mais de uma vez junto com a frequência com que ocorrem, use uma combinação de GROUP BY e HAVING:
Para encontrar o número de palavras no conjunto de resultados acima, use isso como uma subconsulta e conte as linhas em uma consulta externa:
fonte
fonte
SELECT word, COUNT(*) FROM words GROUP by word HAVING COUNT(*) > 1
fonte