2013-07-04 13 views
9

でCOUNTを使用すると、これが私のテーブルです:GROUP_CONCAT

id fk_company 
1   2  
2   2  
3   2  
4   4  
5   4  
6   11 
7   11 
8   11 
9   12 

これは私の複雑なクエリ文字列のほんの一部ですので、私が望む結果が文字列「3、2、3、1」でなければなりません。

私はこのクエリを使用しようとしました:

SELECT GROUP_CONCAT(COUNT(id) SEPARATOR ", ") 
FROM `table` GROUP BY fk_company; 

しかし、私はエラーだ:

エラー番号:グループ機能

の1111

不正使用私は感じCOUNTを持っているが、MAX、MINまたはSUMはGROUP_CONCATで使用できません。もしそうなら、あなたはこれを行う別の方法を知っていますか?

あなたが最初の内側の選択に GROUP BYCOUNT()に必要な、その後 GROUP_CONCAT()

SELECT GROUP_CONCAT(cnt) cnt 
    FROM 
(
    SELECT COUNT(*) cnt 
    FROM table1 
    GROUP BY fk_company 
) q 

出力適用

+0

ですこれが欲しい?次は何が起こる? – Strawberry

答えて

8

:あなたはなぜ

 
|  CNT | 
----------- 
| 3,2,3,1 | 

ここでは、SQLFiddleデモ

+0

ありがとう、私はこれを修正するために多くの時間を費やしました。残念ながら、私は十分な時間を持っていないので、この結果がとても簡単に見えても助けが必要でした。 – mesnicka

+0

@mesnicka大歓迎です。私は助けることができてうれしい:) – peterm

+0

これは現在、fk_company番号が – Strawberry

0
select GROUP_CONCAT(counts) 
    from (
     select count(id) counts from 
      table group by fk_company 
    );