Count / Group By / Order By仅显示最常见值的计数,而不显示字符串本身

时间:2012-07-09 18:48:44

标签: php mysql count group-by sql-order-by

我正在查询表以查找列中最常见的字符串。但是,似乎没有正常工作。它应该返回最常见字符串的值,而是返回最常见字符串存在的次数。查询是:

SELECT COUNT(field_review_bar_tab_2_value) AS `Rows`
FROM (field_data_field_review_bar_tab_2)
GROUP BY (field_review_bar_tab_2_value)
ORDER BY `Rows` DESC
LIMIT 1

简化的表格结构将起到以下作用:

 -----------------------------------
| ID | field_review_bar_tab_2_value |
|----+----------------------------- |
| 1  | Food Drinks                  |
| 2  | Drinks                       |
| 3  | Food Drinks                  |
| 4  | Food                         |
 -----------------------------------

查询认识到,在上面的示例中,“Food Drinks”是列中最常见的字符串。但是,查询返回“2”而不是“食物饮料”。有关为什么它会进行正确查询但返回结果计数而不是字符串值的任何想法?

3 个答案:

答案 0 :(得分:2)

您还需要在field_review_bar_tab_2_value列表中加入SELECT。我已在此处将汇总切换为COUNT(*),并将分组列添加到SELECT

SELECT 
 field_review_bar_tab_2_value AS the_most_common_string,
 COUNT(*) AS `Rows`
FROM (field_data_field_review_bar_tab_2)
GROUP BY (field_review_bar_tab_2_value)
ORDER BY `Rows` DESC
LIMIT 1

答案 1 :(得分:0)

您选择的是计数,而不是值。我想你的意思是:

SELECT field_review_bar_tab_2_value
FROM field_data_field_review_bar_tab_2
GROUP BY field_review_bar_tab_2_value
ORDER BY COUNT(*) DESC
LIMIT 1

由于您已按相关价值进行分组,因此您可以执行COUNT(*)...

答案 2 :(得分:0)

您需要修改查询以返回字段本身。目前,查询仅返回COUNT,因为这是select语句中指示的内容。修改如下:

SELECT field_review_bar_tab_2_value AS `MostCommonString`, COUNT(field_review_bar_tab_2_value) AS `Rows` 
FROM (field_data_field_review_bar_tab_2) 
GROUP BY (field_review_bar_tab_2_value) 
ORDER BY `Rows` DESC 
LIMIT 1