GROUP BY在MySQL

时间:2016-01-11 00:00:08

标签: mysql group-by

我有一张表 - 出于这个问题的目的,它有一列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的思路,但还没想到。

1 个答案:

答案 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;