我有一张表 - 出于这个问题的目的,它有一列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
的思路,但还没想到。
答案 0 :(得分:7)
您可以使用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;