在结果中按特定单词选择并分组MySQL列

时间:2013-06-03 11:10:53

标签: php mysql count group-by

我在数据库中有一些数据(我正在通过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浏览器类型,无论版本号是否不同,以便理想的输出是:

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

我已经尝试了各种搜索不同的SQL命令,我可能忽略或不知道是否可以从数据库中获取结果,而无需在PHP中对它们执行某些操作,然后对结果进行分组和计数,但到目前为止,我能得到的是不同的浏览器按其版本号分组和计算。

如果不可能,这是用MySQL / PHP做这个的最好方法吗?

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

您可以使用browser substring进行分组,只需使用列中的第一个单词即可。我能想到的唯一问题是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)

答案 2 :(得分:1)

试试这个

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

答案 3 :(得分:1)

此脚本将在测试中运行!

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