2014-02-20 141 views
0

我有一個MySQL表,它記錄每個訪客的搜索條件。有時它是一個單詞,有時它是多個單詞。在我的後端,我想列出搜索最多的單詞desc limit x搜索詞最多的詞MYSQL

當然,我可以用PHP做,但我想知道,如果它也可以與MySQL。

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

我知道像紐約這樣的城市可以分爲紐約和紐約,但忽略這一點。

感謝您的幫助!

+1

使用全文搜索:https://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html – PravinS

+0

1.打開瀏覽器,2.導航到google.com 3.搜索mysql group by count or something 4.根據你的發現編寫代碼 –

+0

感謝PravinS。埃利亞斯和約書亞的另一個問題。評論是否給予了聲譽,或者爲什麼你花時間寫出無用的和令人反感的(Elias)答案? – BastianW

回答

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驗證了許多單詞在列表中。

+0

單詞的數量是動態的,但我會努力解決您的問題。謝謝 – BastianW