Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Count/Group By/Order By只显示最常用值的计数,而不显示字符串本身_Php_Mysql_Count_Group By_Sql Order By - Fatal编程技术网

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

Php Count/Group By/Order By只显示最常用值的计数,而不显示字符串本身,php,mysql,count,group-by,sql-order-by,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 表结构经过简化,其效果如下: --

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

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

您还需要在
选择
列表中包含
字段\u审阅\u栏\u选项卡\u 2 \u值。我已经在这里将聚合切换到
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

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

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(*)…

即可。您需要修改查询以返回字段本身。当前查询仅返回计数,因为这是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

它总是很小的,不是吗?很明显,其他桌子也不起作用。我只是觉得是的。这就是我依靠前一天凌晨3点的判断所得到的。谢谢