我正在查询表以查找列中最常见的字符串。然而,它似乎不能正常工作。它应该返回最常见字符串的值,而不是返回最常见字符串存在的次数。查询为:
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 |
-----------------------------------查询识别出,在上面的示例中,“食品、饮料”是该列中最常见的字符串。但是,查询返回的是"2“而不是”食品饮料“。为什么它会进行正确的查询,但返回的是结果的计数,而不是字符串的值?
发布于 2012-07-10 02:51:09
您还需要在SELECT列表中包含field_review_bar_tab_2_value。我在这里将聚合切换为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-10 02:52:15
您选择的是计数,而不是值。我想你的意思是:
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-10 02:52:52
您需要修改查询以返回字段本身。目前,查询只返回计数,因为这是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 1https://stackoverflow.com/questions/11401188
复制相似问题