搜索次数最多的单词MYSQL

时间:2014-02-20 14:05:34

标签: php mysql

我有一个MySQL表,记录每个访问者的搜索词。有时它只是一个单词,有时它是多个单词。在我的后端,我想列出搜索次数最多的单词desc limit x

当然,我可以用PHP来做,但我想知道它是否也可以用MySQL。

search_string
--------------
Hotel in Berlin
Paris
New York
Grand Hotel Principe
Royal Myconian Resort Thalasso Spa
Spa Resort

我知道像纽约这样的城市可以分为纽约和约克,但忽略了这一点。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

可以在单个查询中执行此操作,但您必须假设最大字数。

select word, count(*) as cnt
from (select substring_index(substring_index(search_string, ' ', n.n), ' ', -1) as word
      from searches s cross join
           (select 1 as n union all select 2 union all select 3 union all select 4 union all select 5
           ) n
      where length(replace(search_string, ' ', ' x')) - length(search_string) <= n
     ) w
group by word
order by cnt desc;

substring_index()的嵌套调用会返回列表中的“第n个”字词。 where子句验证在列表中有多少单词。