1

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

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”而不是“食物饮料”。关于为什么会进行正确查询但返回结果计数而不是字符串值的任何想法?

4

3 回答 3

2

您还需要包含field_review_bar_tab_2_valueSELECT列表中。我已将聚合切换到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
于 2012-07-09T18:51:08.850 回答
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(*)...

于 2012-07-09T18:52:14.507 回答
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
于 2012-07-09T18:52:51.540 回答