我有一张表 - 对于这个问题,它只有一列 word
。此表中包含以下信息:
apple
- 出现 3 次banana
- 出现 5 次pear
- 出现 3 次
我编写了以下 SQL 代码来唯一地选择每个单词,以及该单词在表中出现的次数:
SELECT word, COUNT(word) FROM table GROUP BY word ORDER BY COUNT(word) DESC;
这会返回以下信息:
--------------------------
| word | COUNT(word) |
--------------------------
| banana | 5 |
--------------------------
| apple | 3 |
--------------------------
| pear | 3 |
--------------------------
有没有办法写一个查询来返回以下信息:
-----------------------------
| COUNT(word) | words |
-----------------------------
| 5 | banana |
-----------------------------
| 3 | apple, pear |
-----------------------------
我一直在考虑双 GROUP BY
,但还没有想太多。
最佳答案
您可以使用GROUP_CONCAT
:
SELECT word_count, GROUP_CONCAT(word SEPARATOR ', ') as words
FROM (SELECT word, COUNT(word) as word_count
FROM table
GROUP BY word) w
GROUP BY word_count
ORDER BY word_count DESC;
关于mysql - GROUP BY MySQL中GROUP BY返回的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34712264/