首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Count/Group By/Order By仅显示最常用的值的计数,而不显示字符串本身

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

Stack Overflow用户
提问于 2012-07-10 02:48:44
回答 3查看 81关注 0票数 1

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

代码语言:javascript
复制
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

表结构经过简化后,将具有以下效果:

代码语言:javascript
复制
 -----------------------------------
| ID | field_review_bar_tab_2_value |
|----+----------------------------- |
| 1  | Food Drinks                  |
| 2  | Drinks                       |
| 3  | Food Drinks                  |
| 4  | Food                         |
 -----------------------------------

查询识别出,在上面的示例中,“食品、饮料”是该列中最常见的字符串。但是,查询返回的是"2“而不是”食品饮料“。为什么它会进行正确的查询,但返回的是结果的计数,而不是字符串的值?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-10 02:51:09

您还需要在SELECT列表中包含field_review_bar_tab_2_value。我在这里将聚合切换为COUNT(*),并在SELECT中包含了已分组的列。

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2012-07-10 02:52:15

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

代码语言:javascript
复制
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(*)...

票数 0
EN

Stack Overflow用户

发布于 2012-07-10 02:52:52

您需要修改查询以返回字段本身。目前,查询只返回计数,因为这是select语句中指出的。如下所示进行修改:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11401188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档