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点的判断所得到的。谢谢