2009-12-12 36 views
1

對不起,我應該更好地解釋:我有一個$字符串,我想'表'按每個值在'字'列出現在該$字符串中。 的,我需要這樣的查詢:Mysql - 選擇,按次序列值顯示在一個字符串中

'SELECT * FROM table WHERE $string 
LIKE CONCAT("%",LOWER(word),"%")... 

找到的話,那麼我想通過外觀對它們進行排序,這樣:

$string = "lollipop lollipop oh la le la le lollipop"; 
'SELECT * FROM table' 
++++++++++table++++++++++ 
id - word 
1 - la 
2 - le 
3 - lollipop 
4 - shooby 
+++++++++++++++++++++++++ 

(一些查詢表)將輸出:

++++++++++table++++++++++ 
id - word 
1 - lollipop (appears 3 times) 
2 - le (appears 2 times) 
3 - la (appears 2 times) 
4 - shooby (appears 0 times) 
+++++++++++++++++++++++++ 

這是什麼問題? (順便說一句,如果每個單詞出現在字符串中的次數也會顯示在選擇表中)。

回答

2

一招,您可以使用用於替換原來的串詞。然後比較丟失了多少個字符。除以單詞的長度,這會給出該單詞出現的總次數。例如:

SELECT 
    w.word 
, (length(title) - length(replace(title, w.word, '')))/length(word) 
FROM (select 'lollipop lollipop oh la le la le lollipop' as title) t 
CROSS JOIN (
    select 'la' as word 
    union all select 'le' 
    union all select 'lollipop' 
    union all select 'shooby' 
) w 

--> 

la   2.0000 
le   2.0000 
lollipop 3.0000 
shooby  0.0000 
0

如果我按照你的要求...

SELECT word, word_count 
    FROM 
    (SELECT word, COUNT(word) `word_count` FROM table GROUP BY word) order_table 
    ORDER BY word_count DESC 
相關問題