2013-06-03 55 views
3

選擇和組MySQL的專欄中,我有像這樣在一個數據庫中的一些數據(我通過PHP檢索):某些詞結果

+----------------------+ 
| Browser    | 
+----------------------+ 
| Chrome 23.0.1271.97 | 
| Chrome 24.0.1312.52 | 
| Chrome 26.0.1410.64 | 
| Chrome 25.0.1364.172 | 
| Chrome 25.0.1364.152 | 
| Safari 8536.25  | 
| Internet Explorer 8.0| 
| Mozilla 5.0   | 
| Internet Explorer 7.0| 

我想什麼可以做,如果可能的話,是SELECTCOUNTGROUP BY瀏覽器類型,不管版本號是否不同的,所以理想的輸出將是:針對不同的SQL

| Browser   | Count | 
+-------------------+-------+ 
| Chrome   | 29 | 
| Safari   | 15 | 
| Internet Explorer | 45 | 
| Mozilla   | 20 | 

我已經試過各種搜索命令,我可能忽視或不知道以查看是否可以從數據庫獲得結果,而無需事後在PHP中對它們進行分組和計算結果,但到目前爲止,我只能得到不同的瀏覽器按其版本號進行分組和計數。

如果不可能,那麼使用MySQL/PHP來做這件事最好的方法是什麼?

回答

4
SELECT 
SUBSTRING_INDEX(browser,' ',1) as browser, 
count(SUBSTRING_INDEX(browser,' ',1)) as count 
FROM browsers 
GROUP BY SUBSTRING_INDEX(browser,' ',1) 
+0

這個答案的作品謝謝! – MrLewk

2

只需使用列中的第一個單詞即可按browsersubstring進行分組。我能想到的唯一問題是Internet explorer將返回爲Internet

SELECT SUBSTRING_INDEX(browser,' ',1) as browser, 
     COUNT(SUBSTRING_INDEX(browser,' ',1)) as count 
FROM table_name 
GROUP BY SUBSTRING_INDEX(browser,' ',1) 
+0

是的,這是我只注意到它的問題,但它可以用PHP容易地得到補救改變這種=「互聯網」是「IE」的最後的循環,除非有一個更好的辦法,結果做這個? – MrLewk

1

試試這個

SELECT substring_index(browser,'',1),count(browser) as count 
FROM table_name 
GROUP BY browser 
1

這scirpt將工作是測試!

SELECT SUBSTRING_INDEX(Browser, ' ', 1) AS browser, count(id) as count 
FROM `table_name` 
GROUP BY Browser