2016-01-11 14 views
8

私はテーブルを持っています - この質問のために、それは1つの列wordを持っています。GROUP BY MySQLでGROUP BYによって返された行の数

  • apple

は、私は各を選択するには、次のSQLコードを書いて表示される3回 - 表示された5回

  • pear - - 3回
  • banana表示されます。以下の情報は、この表にあります単語がテーブルに表示される回数とともに、ユニークに単語を表示します。

    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の線に沿って考えていますが、避難所」でしたまだ考えていない。

  • 答えて

    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; 
    
    +1

    はトリックをした - ちょうど 'GROUP_CONCAT'はコンマを取らないことに注意してください - それは、引用符で区切り、続いて' SEPARATOR'を持っている必要があります。 – think123

    +0

    ああ、脳のおならをお詫びします。 – wogsland