我正在查询表以查找列中最常见的字符串。但是,似乎没有正常工作。它应该返回最常见字符串的值,而是返回最常见字符串存在的次数。查询是:
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”而不是“食物饮料”。有关为什么它会进行正确查询但返回结果计数而不是字符串值的任何想法?
答案 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